• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android应用:横竖屏切换总结,android切换总结

Android应用:横竖屏切换总结,android切换总结

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android 横竖屏切换,android中横竖屏切换,android切换横屏,android 禁止横屏,android 设置横屏等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android应用:横竖屏切换总结,android切换总结


      眨眼间,已经到了2016你年春节前,离上一篇博客的时间已经有6个月多,回想起这半年的种种,不得不说,学习和工作实在是太忙了,或许这就是程序员的真实写照吧。

      写博客之初,主要的目的还是为了把自己的学习痕迹记录下来,写的东西比较基础,也不多,算是一种督促,希望能坚持地学习下去,因为学识不存在暴发户,靠的是积累。如果对自己过去半年的学习给个评价,我还是比较满意的,前期定下来的目标都基本都达到了。单凭这个,我就觉得今年的新年会是个好年。

      说完过去,那么接着就是将来。因为现在的工作环境上外网不大方便,而且作为开发的主干之一,还是比较忙的,可见用来扩展学习的时间也不会很多。所以,往后若有空更新博客,都是以记录为主,记录工作中遇到的一些问题的解决方法,无论是简单还是困难的,无论是原创还是转载。下面是正题。

 

一、横竖屏的应用

      首先,手机横竖长度的悬殊差距,注定了app横竖屏的表现的差异化。老实说,目前绝大多数android的App在产品设计之初都是在竖屏的基础上进行设计的(也就是单手操作),并无专门地去考虑切换横屏后的用户体验。这些App若是允许切换横屏操作,而用户的手机又设置了允许自动旋转,那么用户在使用这些App的时候很可能会经常碰到横屏的情况,结果不言而知,App给用户的体验就有了折扣。

      所以,碰到这种情况下,不妨根据设计时针对的屏幕模式,固定App的展示方向,正如很多手机游戏固定只能横屏。

 

二、禁止APP内横竖屏切换

      让App禁止掉横竖屏的切换,这就需要通过在AndroidManifest.xml中设置activity中的android:screenOrientation属性值来实现。

该android:screenOrientation属性,他有以下几个参数:
"unspecified":默认值,由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape":横屏显示(宽比高要长)
"portrait":竖屏显示(高比宽要长)
"user":用户当前首选的方向
"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。

比如下列设置
android:screenOrientation="portrait"
则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。
android:screenOrientation="landscape",为横屏显示。

      上述修改也可以在Java代码中通过类似如下代码来设置

1 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

 

三、手动触发APP的横竖屏切换

      由上面描述可知,当android:screenOrientation为默认值"unspecified"或"sensor"等时,就会有系统根据设备 的旋转情况来触发横竖屏的切换,那么有没有方法我们手动在程序中触发横竖屏的变换呢,显然上面为我们提供的 setRequestedOrientation就是系统提供的一个入口,下面我们给出一个按键的方式来触发的案列:

 

 1 public class MainActivity extends Activity implements OnClickListener {
 2 
 3      private Button mBtnLandscape;
 4 
 5      private Button mBtnPortrait;    
 6 
 7      @Override
 8      protected void onCreate(Bundle savedInstanceState) {
 9 
10          super.onCreate(savedInstanceState);
11 
12          setContentView(R.layout.activity_main);
13 
14          mBtnLandscape = (Button) findViewById(R.id.but_landscape);
15 
16          mBtnPortrait = (Button) findViewById(R.id.but_portrait);
17 
18          mBtnLandscape.setOnClickListener(this);
19 
20          mBtnPortrait.setOnClickListener(this);
21 
22      }
23  
24      @Override
25      public void onClick(View v) {
26 
27                  if(v == mBtnLandscape){
28 
29                              setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
30 
31                  }else{
32 
33                              setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
34 
35                  }
36 
37      } 
38 
39      @Override
40      public void onConfigurationChanged(Configuration newConfig) {
41 
42          super.onConfigurationChanged(newConfig);
43 
44          String message=newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE ? "屏幕设置为:横屏" : "屏幕设置为:竖屏";
45 
46          Toast.makeText(this, message, Toast.LENGTH_LONG).show();
47 
48      }
49 }

      需要注意的是,手动调用时,无视AndroidManifest中关于screenOrientation的设置;另外上述代码中的onConfigurationChanged要被调用到也是需要条件的,在这里,只给代码,不做讨论,后面再给出一个相关的补充说明。

 

四、重启Activity的横竖屏切换

      在上面的案列中,缺省状态下,Activity每次横竖屏切换(包括用setRequestedOrientation调用)都会重新调用一轮 onPause-> onStop-> onDestory-> onCreate->onStart->onResume操作,从而销毁原来的Activity对象,创建新的Activity对象,这是因 为通常情况下软件在横竖屏之间切换,界面的高宽会发生转换,从而可能会要求不同的布局。具体的布局切换可以通过如下两种方法来实现:

      1)在res目录下建立layout-land和layout-port目录,相应的layout文件名不变,比如main.xml。layout- land是横屏的layout,layout-port是竖屏的layout,其他的不用管,横竖屏切换时程序自己会调用Activity的 onCreate方法,从而根据当前横竖屏情况自动加载响应的布局。

      2)假如布局资源是不一样又不按照如上设置,则需要通过java代码来判断当前是横屏还是竖屏然后来加载相应的xml布局文件(比如mainP为竖屏 mainL为横屏)。因为当屏幕变为横屏的时候,系统会重新呼叫当前Activity的onCreate方法,你可以把以下方法放在你的onCreate 中来检查当前的方向,然后可以让你的setContentView来载入不同的layout xml。



 1 @Override
 2 protected void onCreate(Bundle icicle) {
 3 
 4     super.onCreate(icicle);
 5 
 6     int mCurrentOrientation = getResources().getConfiguration().orientation;
 7 
 8     if (mCurrentOrientation == Configuration.ORIENTATION_PORTRAIT) {
 9 
10         // If current screen is portrait
11 
12         Log.i("info", "portrait"); // 竖屏
13 
14         setContentView(R.layout.mainP);




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android横竖屏切换小结,Android屏切换小结
  • Android应用:横竖屏切换总结,android切换总结

相关文章

  • 2017-05-26关于在R中无法引用自己的xml文件,引用xml文件
  • 2017-05-26ListView的CheckBox实现全部选中/不选中,listviewcheckbox
  • 2017-05-26深入了解Kotlin的必备书籍,深入了解kotlin必备
  • 2017-05-26填坑实录 Android Studio 利用 ADB WIFI 插件实现真机无线调试,androidadb
  • 2017-05-26高仿it之家新闻客户端源码,高仿it之家源码
  • 2017-05-26Android ExpandableListView相关介绍
  • 2017-05-26android环境下的即时通讯,android即时通讯
  • 2017-05-26Spider引擎分布式数据库解决方案(最全的spider教程)
  • 2017-05-26Android开发学习之路--Content Provider之初体验
  • 2017-05-26可展开的列表组件——ExpandableListView深入解析,expandablelist展开

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android,androidstudio
    • [Android]数据篇,android数据
    • 想要在launcher中模拟按home键。,launcherhome
    • Android 数据库操作,android数据库操作
    • android开发中常见布局的注意点,android开发布局
    • android基础部分再学习---再谈Service进程服务通信
    • ionic打包项目,运行时报错A problem occurred configuring root project 'android'。。。,ionicconfiguring
    • 安卓第十七天笔记--简易版本音乐播放器,安卓第十七天
    • Linux设备模型之input子系统详解
    • AsyncTask基础(笔记)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有