Android橫豎屏切換適配方案

Android橫豎屏切換適配,通常開發都以豎屏爲默認配置,這裏也以豎屏UI爲前提。
1.最直接簡單的,指定全部的activity的方向爲豎屏,就是禁止進行橫豎屏切換。
2.在manifest文件裏面配置html

android:configChanges="keyboardHidden|screenSize|orientation"

旋轉屏幕時activity不會銷燬,會直接把UI顯示在橫屏上,這時會走onConfigurationChanged方法,若是要進行橫屏UI的適配,能夠在這裏從新setContentView,初始化UI,數據還在activity裏面能夠直接鋪到UI上去。
橫豎屏的資源文件配置:layout文件夾是默認的佈局文件夾,必定要有,以豎屏爲默認配置。而後新建layout-land文件夾,裏面放相同的名稱的acitivity的佈局文件,只是這裏的是橫屏的佈局,而後在onConfigurationChanged裏面判斷android

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
            //若是是橫屏了,在這裏設置橫屏的UI
        }else{
            //不然,在這裏設置豎屏的UI
        }
        super.onConfigurationChanged(newConfig);
    }

3.若是不在manifest文件裏面配置,橫豎屏切換時,會走onSaveInstanceState方法(在這裏保存數據),會從新加載當前的activity,重走一遍生命週期,系統會自動根據當前屏幕狀態去加載對應橫豎屏的佈局文件。
4.橫豎屏切換的小技巧,適用於特定場景,好比豎屏是listview的形式,橫屏是gridview網格的形式,那麼這個控件能夠用recyclerview,在onConfigurationChanged方法裏面根據當前是橫屏仍是豎屏,設置recyclerview的setLayoutManager來改變視圖。
5.若是用戶就是以橫屏狀態打開APP呢,以豎屏爲默認設置,在打開頁面時,並不會走onConfigurationChanged方法,這個時候能夠用下面的方法判斷ide

if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){
            //若是是橫屏了,在這裏設置橫屏的UI
        }else{
            //不然,在這裏設置豎屏的UI
        }

最後,關於資源限定符(好比橫豎屏,屏幕最小寬度)的使用,參考官方文檔佈局

相關文章
相關標籤/搜索