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

问题

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

解决方案

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>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 刘海屏指的是手机屏幕正上方由于追求极致边框而采用的一种手机解决方案。因形似刘海儿而得名。也有一些其他叫法:挖...
    _九卿_阅读 6,333评论 0 26
  • 1.前言 先吐槽一下,个人不喜欢刘海屏。然而作为苦逼的开发者,还是要去适配刘海屏的。好了,吐槽完毕,进入正题。 这...
    迷途小码农h阅读 1,789评论 0 6
  • 0.版权声明 本文由玉刚说写作平台提供写作赞助,版权归玉刚说微信公众号所有原作者:四月葡萄版权声明:未经玉刚说许可...
    四月葡萄阅读 60,443评论 17 68
  • 前言目前市面上的刘海屏和水滴屏手机越来越多了,颜值方面是因人而异,有的人觉得很好看,也有人觉得丑爆了,我个人觉得是...
    飘逸解构阅读 7,860评论 6 42
  • 在之前的很长一段时间里,绝大多数的手机屏幕使用的都是16:9的比例。当时普遍认为16:9就是最合适的设备屏幕比例,...
    杰奎琳子阅读 1,360评论 0 12

友情链接更多精彩内容