android 屏幕切换

1.将Activity固定位竖屏能够在配置文件这么写android

<activity android:screenOrientation="portrait">ide

横屏显示:函数

<activity android:screenOrientation="landscape">this

由于一个应用会有多个Activity, 能够根据须要去配置每一个Activity的显示方式,若是不设置,默认是能够横竖屏切换的.spa

2.在源码中设置横竖屏:code

设置竖屏:xml

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);blog

设置横屏:事件

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSPACE);get

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个函数进行屏幕切换时的数据处理.

相关文章
相关标签/搜索