修改主题解决闪现白屏/黑屏
问题描述:
市场上有很多应用,在启动的时候,会出现闪现黑屏或白屏,有的应用却没有。究其原因,是主题在搞鬼。
问题分析
当单击应用的图标时,Android会为被单击的应用创建一个进程,然后创建一个Application实例,然后应用主题,然后启动Activity。
因为启动Activity也是需要时间的,这之间的时间间隔,便是闪现白屏或黑屏的时间。
解决方案
为解决启动时闪现白屏或黑屏的问题,我们可以从主题下手,为应用创建一个透明的主题。
第一步:创建一个透明主题。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--设置透明背景-->
<item name="android:windowIsTranslucent">true</item>
</style>
第二步:在AndroidManifest.xml中为application应用主题。
<application
android:name=".MainApplication"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:theme="@style/AppTheme">
这样一来,启动时变不会闪现黑屏或白屏了。
如果,你的应用需要一个特定的主题,但该主题不是透明的,你可以先将application的默认主题设置成透明的主题,然后在程序启动后(可以在启动页进行),通过
public void setTheme(int resid)
方法将主题设置成你想要的主题即可。
系统默认launch_background.xml,增加开屏图片,否则可能会白屏
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/splash" />
</item>
</layer-list>
image.png
网友评论