设置启动Theme

设置启动Theme

设置启动Theme可以去除启动白屏的情况,同时从视觉效果上感觉app启动速度加快了

原理

在app启动时,会先加载一个空白window,然后再启动app进程,Theme就是作用于该空白window上的

设置

  1. 创建一个drawable。注意:图片宽高最好是比屏幕较大的手机还要大一些,核心内容较为居中,这样能够兼容屏幕较小的手机且图像不会拉伸变形

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white"/>
    <item>
    <!--图片最好是能够覆盖屏幕较大的手机-->
    <bitmap
    android:src="@mipmap/img_splash_bg"
    android:gravity="center"/>
    </item>
    </layer-list>
  2. 创建主题

    1
    2
    3
    4
    <style name="LauncherTheme" parent="parent">
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowBackground">@drawable/launcher</item>
    </style>
  3. 为启动Activity设置该主题

    1
    2
    3
    4
    5
    6
    7
    <activity android:name=".SplashActivity"
    android:theme="@style/LauncherTheme">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
  4. Activity中的onCreate方法中将主题切换回来

    1
    2
    3
    4
    5
    6
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // 在这里将主题切换回来
    setTheme(R.style.Theme);
    super.onCreate(savedInstanceState);
    }