android 屏幕横竖屏切换 小结

来源:互联网 发布:lol冰狼辅助源码 编辑:程序博客网 时间:2024/05/02 00:33


看了下面的内容,整理了一下自己的所得:

http://blog.sina.com.cn/s/blog_48964b1201017xwc.html
http://www.cnblogs.com/franksunny/archive/2012/03/21/2410484.html
http://www.open-open.com/lib/view/open1328069449468.html

http://www.2cto.com/kf/201205/132321.html


一、禁止横竖屏切换


android:screenOrientation="portrait"

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

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

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)


二、横竖屏切换更改布局(开发需求中:要能横竖屏切换)


1.建立不同的布局文件(看html内容)

http://blog.sina.com.cn/s/blog_48964b1201017xwc.html

http://www.cnblogs.com/franksunny/archive/2012/03/21/2410484.html

http://www.open-open.com/lib/view/open1328069449468.html

更改布局的两种方式:

 1.1 系统自动判断:切换横竖屏
 1.2 在onCreate里判断屏幕方向切换

上面,当屏幕横竖屏切换时,会重新加载数据,调用各个生命周期(  销毁当前的activity,重新执行onCreate()  )


注意:

在实际开发中:如果要横竖屏切换,则进行下面的步骤:

1.建立不同的布局文件(看html内容)

在onCreate()中:

@Overrideprotected void onCreate(Bundle icicle) {super.onCreate(icicle);setContentView(R.layout.main);//这里,系统自动判断:切换横竖屏init();//初始化,赋值等操作findViews();//获得控件setListensers();//设置控件的各种监听方法}

2.

在Androidmanifest.xml中配置activity:
android:configChanges="keyboardHidden|orientation|screenSize"


横竖屏切换时,只监听方向改变(onConfigurationChanged()),不会调用各个生命周期方法。

onConfigurationChanged()(除非在横竖屏下状态不同),直接设置界面、恢复状态即可:

@Overridepublic void onConfigurationChanged (Configuration newConfig){super.onConfigurationChanged(newConfig);setContentView(R.layout.main);//注意,这里删除了init(),否则又初始化了,状态就丢失findViews();setListensers();}


3.activity数据,状态的保存:其实和普通的activity是一样的

 3.1 当activity没有被销毁时,在onConfigurationChanged()中直接使用当前的数据和状态。
 3.2 当activity被用户销毁时,重新执行onCreate(),是一个新的activity实例(在这里,没有什么可说的)
 3.3 当activity被系统销毁(一般是内存吃紧时,系统把位置后台不可见的activity销毁了)时,
   3.3.1 在onSaveInstanceState(Bundle outState)中保存数据和状态.
   3.3.2 重新执行onCreate(),取得之前保存的数据和状态。这也是一个新的activity实例

http://www.2cto.com/kf/201205/132321.html

关于,保存数据和状态,可以自己搜索一些资料,了解更详细的知识。





其他内容:

android屏幕旋转时Activity不重新调用onCreate的方法  

当手机转屏时,Activity的onDestroy和onCreate方法会被调用 

为了避免Activity在转屏时销毁: 

1)修改AndroidManifest.xml 在activity属性中加入: 

 android:configChanges=”orientation|keyboardHidden”  

android:configChanges,这个方法主要是负责列出清单,

当清单上用户指定的设置改变时,Activity会自己处理这些变化。 

orientation,屏幕界面旋转(可能是用户手动旋转的),

【注意:如果你的开发API等级等于或高于13,你还需要设置screenSize,因为screenSize会在屏幕旋转时改变】 

keyboardHidden,键盘辅助功能改变

如下:  

<activity android:theme="@style/ContentOverlay"  android:launchMode="singleTask"   android:configChanges="keyboardHidden|orientation|screenSize" //4.0以上必须加此属性  android:windowSoftInputMode="adjustPan|stateAlwaysVisible" android:name="com.weibo.net.ShareActivity"/>






0 0