App横竖屏切换的时候会销毁当前的Activity然后重新创建一个Activity。用户可以自行在生命周期的每个方法里都添加打印Log的语句,来进行判断,又或者设一个TextView按钮,点击按钮后,修改TextView文本,然后横竖屏切换,这时会发现TextView文本变回之前的内容了。横竖屏切换时Act走下述生命周期:onPause → onStop →onDestory → onCreate → onStart → onResume。
关于横竖屏切换可能遇到以下问题:
1.可以禁止屏幕横竖屏自动切换
在AndroidManifest.xml中为Act添加一个属性:android:screenOrientation,有下述可选值:
unspecified:默认值,由系统来判断显示方向,判定的策略是和设备相关的,所以不同的设备会有不同的显示方向;
landscape:横屏显示(宽比高要长);
portrait:竖屏显示(高比宽要长);
user:用户当前首选的方向;
behind:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的);
sensor:由物理的感应器来决定,如果用户旋转设备,屏幕会横竖屏自动切换;
nosensor:忽略物理感应器,这样就不会随着用户旋转设备而发生切换("unspecified"设置除外)。(https://www.xing528.com)
2.横竖屏时加载不同的布局
(1)准备两套不同的布局,Android会自动根据横竖屏加载不同布局,创建两个布局文件夹:layout-land横屏、layout-port竖屏,然后把这两套布局文件放进这两文件夹里,文件名一样,Android就会自行判断,然后加载相应布局。
(2)用户可在代码中自行判断,可以加载些什么。
用户一般是在onCreate()方法中加载布局文件的,因此可以在这里对横竖屏的状态做判断,关键代码如下:
3.模拟器横竖屏切换的方法
如果模拟器是GM的话,直接按模拟器上的切换按钮即可。原生模拟器可按[Ctrl+f11/f12]进行切换。
4.状态保存
状态保存可通过完善Bundle savedInstanceState参数予以完成,有如下3种方法:
用户只重写onSaveInstanceState()方法,往这个bundle中写入数据,比如:
这样,然后用户在onCreate或者onRestoreInstanceState中就可以取出里面存储的数据,不过取之前要判断是否为null。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
