看了下面的内容,整理了一下自己的所得:
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()中:
@Override protected 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()(除非在横竖屏下状态不同),直接设置界面、恢复状态即可:
@Override public 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"/>