版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012359498/article/details/84582023
应用启动时短暂的黑屏是需要跑完oncreate和onresume才会显示出界面,黑屏就是你设置的activity的背景色,就算在oncreate里什么也不做,也会有闪一下的这种现象
解决方案:
1.更换自定义的透明theme
<style name="Theme.Start" parent="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
把activity的背景设置为透明,这样黑屏就看不到了,只会初次启动的时候会有短暂的延时,总比黑屏强
2.启动背景可以放置在xml里去显示
3.计算延迟时间
onCreate的时候记下时间,在startActivity前算下之间耗时,可以发现在Application已经实例化的时候会耗时非常短,可以设置一个time_delayed,来延时跳转别的页面,这样不会第二次启动非常快了。
4.全屏切换到有状态栏时界面的上部会被挤压
在跳转前改变window的显示模式就可以了
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attrs);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);