如何让手机横竖屏切换不重走Activity生命周期

来源:互联网 发布:steam游戏mac 编辑:程序博客网 时间:2024/05/04 20:59

在Manifest里加上android:configChanges="keyboardHidden|orientation|screenSize";

 

扩展补充:

一:

Activity中还有一属性和屏幕方向有关:

<activity 
   . . .
      android:screenOrientation=["unspecified" | "user" | "behind" |
                                 "landscape" | "portrait" |
                                 "sensor" | "nosensor"]
    . . .
&lt;/activity>

比如,在Mainifest.xml的Activity元素中增加这么一个属性:

android:screenOrientation="portrait"

则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。

android:screenOrientation="landscape“为横屏显示。

这里提一个小知识,Anroid模拟器中,快捷键"ctrl+F11"可以实现转屏。

 

二:

configuration

参考:http://blog.csdn.net/ljz2009y/article/details/8515548


一、设置android的硬件环境监听:

[html] view plaincopyprint?
  1. <activity  
  2.             android:configChanges="orientation"  
  3.             android:name=".MainActivity"  
  4.             android:label="@string/title_activity_main" >  
  5.             <intent-filter>  
  6.                 <action android:name="android.intent.action.MAIN" />  
  7.                 <category android:name="android.intent.category.LAUNCHER" />  
  8.             </intent-filter>  
  9.         </activity>  


在需要监控的activity中的标签写下的方法用户监听标签

在activity中实现一下方法:


 

同这用就可以当屏幕的有横屏竖屏之间的转化,就有相关的事件触发。

(键盘显示或者隐藏、用户的语言设置、用户字体修改、对键盘类型修改、键盘导航修改)这些都可以触发相关的activity的事件产生。


二、对android固定设置格式


以下是网上良好的应用程序配置的说明:

Android通过终止、重启应用程序来重新加载资源文件,以做到对语言、区域和硬件实时变化的支持。它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。

为了能让Activity能监听实时的配置变化,需要在manifest节点里添加“android:configChanges”特性,指定你要处理的配置变化事件。接下来的列表给出了你可以指定的配置变化的事件值:

❑ orientation 屏幕在纵向和横向间旋转。

❑ keyboardHidden 键盘显示或隐藏。

❑ fontScale 用户变更了首选的字体大小。

❑ locale 用户选择了不同的语言设定。

❑ keyboard 键盘类型变更,例如手机从12键盘切换到全键盘

❑ touchscreen或navigation 键盘或导航方式变化,一般不会发生这样的事件

// --------

Configuration 类中包含了很多种信息,例如系统字体大小,orientation,输入设备类型等等.

fontScale -- 来源于system.prop中 sys.font.scale配置项

输入设备类型配置:系统加入的任何输入device必须拥有输入属性:现在android中仅支持touchscreen(触摸),keyboard(键盘),navigation(滚动球)

orientation -- 屏幕方位

keyboardHidden -- 如果是划盖或开盖手机并且没有软键盘支持,这个设成true

hardKeyboardHidden -- 如果是划盖或开盖手机,这个设成true

locale -- 用户选择的location信息

theme -- 皮肤,资源等等

 

当Configuration改变后,ActivityManagerService将会发送"配置改变"的广播,会要求ActivityThread 重新启动当前focus的Activity.

 

0 0