1. 程式人生 > >Android N 分屏適配

Android N 分屏適配

Android N就是Android7.0,雖然沒有用過Android N,但是公司要求適配Android N,主要需要適配分屏,我進行了一番探索。

當app切換/恢復分屏或畫中畫狀態時,Activity會回撥下面的方法:

@Override    

public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {

//切換到分屏狀態

}

@Override   

public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode){

//切換到畫中畫

}

同時也可以通過Activity.isInMultiWindowMode()來判斷當前是否處於分屏模式。

可以通過Activity.isInPictureInPictureMode()判斷是否處於畫中畫模式。

需要注意的是:

1、activity處於分屏模式時,在Activity獲取到的方向不是固定的,當使用getResources().getConfiguration().orientation獲取螢幕方向時,如果分屏的寬度>高度則系統orientation值為橫屏,寬度<高度orientation值為豎屏。。。。。。這是我發現的規律。

2、從普通模式調整到分屏模式時,或者,處於分屏模式動態調整分屏大小時,Activity也會重新onCreate,如果不想讓Activity重建可以設定如下:

android:configChanges="screenSize|keyboardHidden|orientation|smallestScreenSize"

這樣在分屏的大小調整後,會回撥onConfigurationChanged方法。

2、無法獲取輸入法展示狀態。通常情況下,我們通過佈局變化來判斷輸入法是否顯示,但是分屏模式下,並且手機豎屏狀態時,app彈出輸入法不會引起佈局變化,也就是說鍵盤不會遮擋app。