闲谈
距离上一篇博客已经两个月的时间了,一是年底的工作任务确实加重了一些,二是自己也有些懈怠了--让自己写博客的时间为其他事情让步。好在昨天任务完成,今天放松的休息了一上午,觉得还是要做点什么,来庆祝下到来的新年。
问题
最近9.0系统的手机越来越多,让我们必须要面对新版本带来的问题。我们的闪屏页是个居中显示的图片作为activity的背景构成,设置activity为全屏。但是到了9.0之后,小米的手机会出现全屏失败而造成的图片跳动的问题。
解决方案
主要是因为9.0之后,手机对于全屏的概念需要考虑到刘海区域。
我们需要将项目的SDK版本升级到28,将下面的代码在setContentView()之前调用即可。
/**
* 设置9.0全屏
*/
private void fullP() {
if (Build.VERSION.SDK_INT >= 28) {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
getWindow().setAttributes(lp);
}
}
复制代码
常量 | 常量说明 |
---|---|
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT | 只有当DisplayCutout完全包含在系统状态栏中时,才允许窗口延伸到DisplayCutout区域显示。 |
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER | 该窗口决不允许与DisplayCutout区域重叠。 |
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES | 该窗口始终允许延伸到屏幕短边上的DisplayCutout区域。 |
如果对刘海屏有特殊需求的,可以看下小米手机的刘海屏适配方案。小米刘海屏适配详情。
杨高拴驽马,笔小画神龙