Android Activity启动黑/白屏原因与解决方式

Activity启动黑屏/白屏的原因

Activity的onCreate()方法中调用了setContentView()方法,传入了我们绘制的layout文件,也就是我们应该看到的Activity内容。但是Android系统在启动一个新的Activity时,首先进行的不是绘制Activity ContentView。下图为Activity的UI结构。

可见,一个Activity中在ContentView的外围还有PhoneWindow、DecorView、TitleView,当Activity进行绘制时会先绘制这三个控件,此时ContentView还没加载进来,所以什么东西都看不到,系统会将屏幕填充主题默认的背景色,就出现了Activity启动之前的黑屏/白屏现象。

解决方法

1) 将主题背景设置成一张图片,但图片的屏幕适配问题就需要考虑了,主题中的背景图片会自动拉伸

<style name="AppTheme" parent="android:Theme.Light.NoTitleBar">  
    <item name="android:windowNoTitle">true</item>  
    <item name="android:windowActionBar">false</item>  
    <item name="android:windowBackground">@drawable/bg_splash</item>  
    <item name="android:WindowFullscreen">true</item>
</style>

2) 将主题背景变成透明的,这样在ContentView加载出来前,会透过启动的Activity看到桌面,不会存在黑屏/白屏的现象,再将标题栏去掉,把Activity设置成全屏的。缺点是如果启动的是一个有复杂耗时操作的Activity,会有一种延迟的感觉。

<style name="AppTheme" parent="android:Theme.Light.NoTitleBar">  
    <item name="android:windowIsTranslucent">true</item>  
    <item name="android:windowNoTitle">true</item>  
    <item name="android:windowActionBar">false</item>  
    <item name="android:windowBackground">@android:color/transparent</item>  
    <item name="android:WindowFullscreen">true</item>
</style> 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值