App启动白屏处理

2020-12-29  本文已影响0人  克罗克达尔

如果app不做任何处理,在桌面点击app图标和第一个activity呈现之间,有一个白屏的时间,并且该时间随着Application里面初始化的东西增加而增加。


SVID_20201229_154900_1.2020-12-29 15_57_35.gif

我们需要做的是像大多数app一样,为我们的app增加一个开屏页面,在用户点击图标和真正的页面展示的中间给用户看一些图片,而不是一个白屏的页面。以下是具体步骤:

  1. 新建一个SplashActivity并设置为启动页;
  2. 在drawable文件夹下创建一个新的drawable叫做bg_splash;
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/white" />
        </shape>
    </item>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/baseline_account_balance_black_48dp" />
    </item>
</layer-list>
  1. 在style.xml文件里面建立一个新的style叫做SplashTheme并应用于SplashActivity;
 <style name="SplashTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowBackground">@drawable/bg_splash</item>
    </style>
  1. 在SplashActivity里面注释掉setContentView方法,并在其后启动我们的MainActivity;
class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
//        setContentView(R.layout.activity_splash)
        startActivity(Intent(this, MainActivity::class.java))
        finish()
    }
}
  1. 再次启动app,就会发现没有白屏页面,在点击app图标和展示首页中间会是我们的开屏页面。效果如下:


    SVID_20201229_163656_1.2020-12-29 16_39_08.gif

demo链接

注意

上一篇 下一篇

猜你喜欢

热点阅读