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個函數進行屏幕切換時的數據處理.

相關文章
相關標籤/搜索