Android App桌面启动时,会出现黑/白闪屏问题的解决

编程入门 行业动态 更新时间:2024-10-09 11:22:17

Android App桌面<a href=https://www.elefans.com/category/jswz/34/1771122.html style=启动时,会出现黑/白闪屏问题的解决"/>

Android App桌面启动时,会出现黑/白闪屏问题的解决

先看两幅动图:斗鱼&B站

有的App,每次启动的时候,是直接进入这个启动页面。如图1;有的App会先白屏停顿一下后再进入启动页面(Splash),如图2;

很多时候,我们启动APP时会有短暂的白屏或者黑屏,大概1~2秒后,才会显示主界面或者显示启动页,这是为什么呢?本篇文章来介绍一下,并给出APP启动秒开的解决办法。

一、原因分析

当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?如果没有任何反应的话,如果程序初始化的时间很长,用户可能还以为没有点到相应的位置。但此时所启动的程序还没初始化完,既无法显示程序,又不能停在原处不做任何动作,怎么办?这就有了Starting Window的概念,也可以称之为Preview Window。

Starting Window就是一个用于在应用程序进程创建并初始化成功前显示的临时窗口,拥有的Window Type是TYPE_APPLICATION_STARTING。在程序初始化完成前显示这个窗口,以告知用户系统已经知道了他要打开这个应用并做出了响应,当程序初始化完成后显示用户UI并移除这个窗口。

显示白屏或者黑屏,是由你的启动Activity或者Application来决定的。如果你使用的是Light主题,那么就可能出现白屏;如果你使用的是Black主题,那么就可能出现黑屏。当你设置Light或者Black主题时,Starting Window显示的就是你启动Activity的android:windowBackground属性,所以才会出现白屏或者黑屏的情况。

二、解决办法

1、定义纯颜色背景或者图片

a、纯颜色,直接设置android:windowBackground属性为颜色代码:

<item name="android:windowBackground">@color/colorAccent</item>
b、图片, 需要在Drawable中定义一个splash.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android=""> <!-- 背景颜色 --> <item android:drawable="@color/green" /> <item> <!-- 图片 --> <bitmap android:gravity="center" android:src="@drawable/icon_welcome" /> </item>
</layer-list>

2、设置style.xml

a、设置背景图Theme

<style name="Theme.AppStartLoad" parent="android:Theme">  <item name="android:windowBackground">@drawable/ipod_bg</item>  <item name="android:windowNoTitle">true</item>  
</style>
b、 设置透明Theme
<style name="Theme.AppStartLoadTranslucent" parent="android:Theme">  <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item>  
</style>

上面我定义了两种Theme,第一种Theme就是设置一张背景图。当程序启动时,首先显示这张背景图,避免出现黑屏。第二种Theme是把样式设置为透明,程序启动后不会黑屏而是整个透明了,等到界面初始化完才一次性显示出来。

3、修改AndroidManifest.xml

为了使上面Theme生效,我们需要设置一些Activity的Theme
<applicationandroid:allowBackup="true"android:icon="@drawable/ipod_icon"android:label="@string/app_name"android:launchMode="singleTask"><!-- iPod主界面 -->
<activityandroid:name="com.apical.apicalipod.IPodMainActivity"<!-- 使用上面定义的样式-->android:theme="@style/Theme.AppStartLoad"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>//......</application>
完!!!



更多推荐

Android App桌面启动时,会出现黑/白闪屏问题的解决

本文发布于:2024-03-14 13:30:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736572.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:启动时   桌面   Android   App   白闪屏

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!