Android 異形屏設(shè)備設(shè)置沉浸式界面

問題

由于業(yè)務(wù)需要,應(yīng)用需要配置沉浸式界面,但設(shè)置全屏時,會遇到異形屏采用傳統(tǒng)的全屏設(shè)置模式無效問題。

解決方案

Android P版本提供參數(shù)layoutInDisplayCutoutMode供實現(xiàn)沉浸式設(shè)置。layoutInDisplayCutoutMode幾種屬性設(shè)置:

  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT僅當劉海屏完全包含在系統(tǒng)欄中時,才允許窗口擴展到劉海區(qū)域。 否則,窗口的布局使其不與劉海區(qū)域重疊。
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES :允許 Window 延伸到短的一側(cè)邊緣的劉海區(qū)域。
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER :Window 不允許延伸到劉海屏區(qū)域。
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS:允許 Window 延伸到所有的屏幕邊緣劉海區(qū)域。

項目中選用shortEdges模式,直接上代碼

public final class ImmersiveUtils {

    private ImmersiveUtils() {
    }


    /**
     * 設(shè)置沉浸式模式
     */
    public static void setImmersiveMode(Activity activity) {
        Window window = activity.getWindow();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
            WindowManager.LayoutParams lp = window.getAttributes();
            lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
            window.setAttributes(lp);
        } else {
            window.requestFeature(Window.FEATURE_NO_TITLE);
            window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
        final View decorView = window.getDecorView();
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        window.setStatusBarColor(Color.TRANSPARENT);
    }
}

ActivityonCreate()方法中增加方法

ImmersiveUtils.setImmersiveMode(this);


補充

實際測試中,發(fā)現(xiàn)部分高版本異形屏機型的啟動頁通過上述方式設(shè)置,仍顯示黑色的狀態(tài)欄(神奇?。。。?。
解決方案:
方法設(shè)置同時,在對應(yīng)主題進行配置,問題解決了,具體如下

    <style name="AppTheme" parent="@style/Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:windowFullscreen">true</item>

        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
    </style>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容