android 桌面图标适配,android启动页全屏适配

冷知识弥补

首先要了解,在app从系统launcher点击图标启动的时候,一共分为两个部分(界面),一个是默认的windowBackground,第二个是splash页的xml。由于application中对整个app设置了theme属性,从而会影响到第一个windowBackground的显示,如果是drak主题,默认进来就是黑的,如果是light,默认进来是白的。所以会有朋友遇到,一启动就显示白屏,过1~2秒才跳出来splash页。

最终表现

windowBackground阶段:隐藏状态栏、隐藏actionbar、透明导航栏(虚拟菜单栏)。

splashActivity阶段:隐藏状态栏、隐藏actionbar、隐藏导航栏。

做法

隐藏状态栏和actionbar太简单了就不一一阐述了,这里要强调一下导航栏的处理(有些机型没有,有些机型有,可以设置是否显示)。

在适配过程中,有些启动屏是一启动默认设置一张和splash页相同的图,但是启动的时候,默认的windowBackground是全屏的,它会无视c导航栏,就会发生导航栏遮挡背景的情况,由于无法在style的theme设置隐藏导航栏,因此只能加入下面两个属性来透明导航栏。

@color/transparent

@android:color/transparent

等到splash页的时候,在onCreate里,代码动态设置隐藏导航栏

override fun onCreate(savedInstanceState: Bundle?) {

val decorView: View = window.decorView

val uiOptions: Int = (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN)

decorView.systemUiVisibility = uiOptions

}

贴出完整的theme代码

@drawable/splash_bg

true

true

@color/transparent

@android:color/transparent

坑:

切记不要在splash的theme中使用透明属性

true

该属性会在部分手机中,使得状态栏能透到桌面背景,还会极大减慢手指点击桌面图标app启动的速度。(最明显的一个手机,冷启动点击桌面图标的时候,点击完成,图标会泛白一下,然后大概2s后才会弹出界面,所以导致我经常觉得自己是不是没有点击到图标,延迟感非常严重。)

注:override fun onCreate(savedInstanceState: Bundle?) {

val decorView: View = window.decorView

val uiOptions: Int = (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN)

decorView.systemUiVisibility = uiOptions

}

上述中,这个属性的设置,会导致页面失去focus焦点,第一下点击失效(例如首页广告闪屏点击,需要点两次才会触发click),后面浏览了android的官方文档,发现有较为全面的全屏适配方案,参考官网

https://developer.android.com/training/system-ui/immersive

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值