android 屏幕切换
1.将Activity固定位竖屏可以在配置文件这么写
<activity android:screenOrientation="portrait">
横屏显示:
<activity android:screenOrientation="landscape">
因为一个应用会有多个Activity, 可以根据需要去配置每个Activity的显示方式,如果不设置,默认是可以横竖屏切换的.
2.在源码中设置横竖屏:
设置竖屏:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
设置横屏:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSPACE);
3.源码处理横竖屏切换事件
首先在AndroidManifest.xml中对Activity注册android:configChanges="orientation" 属性,然后在对应的Activity源码中重写onConfigurationChanged(Configuration newConfig) 函数即可,这样处理后,当横竖屏切换时,就会响应Activity中的onConfigurationChange(),然后对横竖屏做判定处理就可以啦
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_LANDSCAPE){ Log.e("tag","当前屏幕切换成横屏显示"); }else if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT){ Log.e("tag","当前屏幕切换成竖屏显示"); } }
使用此方法不会再切换横竖屏时,Android默认重启当前Activity了. 另外屏幕切换时还会触发如下2个方法
@Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState); Log.e("tag","保存数据操作"); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); Log.e("tag","回复数据操作"); }
切换横竖屏时,会执行onSaveInstanceState(), 重启载入当前Activity时会执行onRestoreInstanceState(),可以用这2个函数进行屏幕切换时的数据处理.