美文网首页
Android 异形屏设备设置沉浸式界面

Android 异形屏设备设置沉浸式界面

作者: 果汁味Studio | 来源:发表于2023-03-19 15:53 被阅读0次
    问题

    由于业务需要,应用需要配置沉浸式界面,但设置全屏时,会遇到异形屏采用传统的全屏设置模式无效问题。

    解决方案

    Android P版本提供参数layoutInDisplayCutoutMode供实现沉浸式设置。layoutInDisplayCutoutMode几种属性设置:

    • LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT仅当刘海屏完全包含在系统栏中时,才允许窗口扩展到刘海区域。 否则,窗口的布局使其不与刘海区域重叠。
    • LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES :允许 Window 延伸到短的一侧边缘的刘海区域。
    • LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER :Window 不允许延伸到刘海屏区域。
    • LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS:允许 Window 延伸到所有的屏幕边缘刘海区域。

    项目中选用shortEdges模式,直接上代码

    public final class ImmersiveUtils {
    
        private ImmersiveUtils() {
        }
    
    
        /**
         * 设置沉浸式模式
         */
        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);
    
    补充

    实际测试中,发现部分高版本异形屏机型的启动页通过上述方式设置,仍显示黑色的状态栏(神奇!!!)。
    解决方案:
    方法设置同时,在对应主题进行配置,问题解决了,具体如下

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

    相关文章

      网友评论

          本文标题:Android 异形屏设备设置沉浸式界面

          本文链接:https://www.haomeiwen.com/subject/nxncrdtx.html