Android启动页白屏/黑屏问题解决

1. 前言

记得之前记录过这个问题怎么解决,但是在自己的这个博客中确实没有找到。所以还是继续记录一笔。为了更加直观的说明这个问题,这里我随意创建了一个应用,然后做一个录屏:

在这里插入图片描述
在上面的动态图片中,可以看到打开系统自带、自己创建应用均有启动的黑屏显现。但是自己在平时实际中使用App的过程中,却没有看见过这个显现,取而代之的是一个启动页面。这种效果更加友好,所以这里也来记录下怎么解决这个问题。

2. 解决

解决方式其实就是自定义主题样式。大致存在两种方式来解决这个问题,第一个是直接设置背景色,第二个是设置背景图片。

2.1 纯色背景

对于设置颜色,我们需要同时设置几个部分的颜色,分别包括最顶部往下的状态栏、ActionBar、主页的三个颜色。具体的对应关系如下:
在这里插入图片描述
注:上图来自Android如何设置顶部状态栏颜色(主题)

所以解决方案为隐藏ActionBar,并设置状态栏statusBarColor的颜色和windowBackground的颜色一致即可。那么可以为启动的Activity来设置主题,即:android:theme="@style/WelcomeTheme"。对于WelcomeTheme的主题,定义在themes.xml文件中:

<style name="WelcomeTheme" parent="Theme.AppCompat.NoActionBar">
    <!--设置背景颜色-->
    <item name="android:windowBackground">@color/full_screen</item>
    <!--设置没有ActionBar-->
    <item name="android:windowNoTitle">true</item>
    <!--设置顶部状态栏颜色-->
    <item name="android:statusBarColor" tools:targetApi="l">@color/full_screen</item>
</style>

对于full_screen定义为:

<color name="full_screen">#FF369046</color>

那么这样就可以实现一个直观上的全屏效果。如下:

在这里插入图片描述
那么对于启动页可以设置一个应用Logo,就只需要设置一个超时跳转即可。就不会给用户一种视觉上的白/黑屏效果。

但是,其实这并不是我们所希望的效果,因为我们希望在进入后的背景色、状态栏颜色都回归到正常的App的默认主题颜色,所以我们还需要在启动MainActivity的时候进行主题的重置。即:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTheme(R.style.Theme_PlayMusicDemo); //恢复原有的样式
        setContentView(R.layout.activity_main);
    }
}

最终效果:
在这里插入图片描述

2.2 设置背景图片

当然设置纯色背景可以实现效果,但是在实际的App中,都是设置一个本应用的Logo,也就是设置的是一张图片背景。直接设置图片即可:

<item name="android:windowBackground">@drawable/aaa</item>

但是,其实感觉QQ的启动应该是在背景设置为白色,进入后的Activity这个页面设置为Logo页面。因为我在测试中发现如果就考虑修改白屏/黑屏的部分,跳转的太快了,而实际上的App的停留时间在2-3秒钟。所以如果需要还需要自己去尝试看看该如何实现。

3. 最终方案

  • 将白屏/黑屏效果部分替换为纯色背景;
  • 将启动的Activity设置为欢迎的Logo,并启动一个超时Handler来启动主页。

对于第一个这里不再给出,对于超时的Handler来启动另一个Activity这里可以给出示例代码:

// 3秒钟后跳转
new Handler(new Handler.Callback() {
    @Override
    public boolean handleMessage(@NonNull Message message) {
        startActivity(new Intent(getApplicationContext(), XXXActivity.class));
        finish();
        return false;
    }
}).sendEmptyMessageDelayed(0, 3000);

Thanks

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android启动白屏问题通常是由几个可能的原因引起的。 首先,可能是由于启动资源加载过多或加载时间过长。启动一般是启动应用程序时的第一个面,如果其中包含大量的图片或其他资源文件,可能会导致加载时间过长,显示为白屏。为了解决这个问题,可以尝试优化资源加载的方式,比如减少资源文件的大小或数量,并尽量异步加载资源。 其次,可能是由于启动逻辑处理过多。如果在启动进行了过多的逻辑处理,比如网络请求、数据库读写等操作,会导致启动一直停留在加载状态,最终显示为白屏。要解决这个问题,可以考虑将一些耗时操作移到后台线程进行,并在处理完成后再跳转到下一个面。 另外,设备性能也可能是造成启动白屏的原因之一。如果设备内存不足或处理器性能较低,可能无法快速加载启动的资源,导致白屏。对于这种情况,可以考虑对资源进行压缩或减少启动的复杂度,以提高面加载速度。 最后,还有可能是由于启动的布局或主题样式设置问题。如果启动的布局或主题样式存在错误或异常,可能导致面无法正确显示,最终呈现为白屏。为了解决这个问题,可以检查启动的布局文件、主题样式文件以及相关的资源引用是否正确,并确保它们能够正确加载和渲染。 综上所述,解决Android启动白屏问题,需要注意资源加载、逻辑处理、设备性能以及布局样式等方面的因素,以确保面能够正常加载和显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦否

文章对你有用?不妨打赏一毛两毛

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值