打开开屏后总是有白屏现象,且白屏时间过长

转载:https://www.jianshu.com/p/f358a584ef10

在theme设置windowBackground就可以解决启动时白屏黑屏一会儿了。

下面是解决方法:
思路:给启动页设置一个和启动页样式相同的背景。

步骤:4步

1,在drawable目录下新建一个根节点为layer-list的xml文件,如launch.xml,在xml中做出和开屏图一样的效果,我的开屏图是由两个ImageView拼接的,因此我的layer-list类似如下(根据自己的开屏图对应编写自己的launch.xml文件)。

这样子布局,一开始空白页时候的白屏用开屏替换,不会变形, 不使用xml这种方式的话, 在空白页展示 布局的时候,图片会变形。 

 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@color/white_FFFFFF"></item>
   <item android:bottom="@dimen/len_100dp">
        <bitmap
            android:src="@drawable/launch_view_bg"
            android:tileMode="disabled" />
   </item>
    <item
    android:height="@dimen/len_100dp"
    android:gravity="bottom">
    <bitmap
        android:gravity="bottom"
        android:src="@drawable/splash_bottom_logo" />
    </item>
</layer-list>

2,给开屏Activity设置主题,并设置背景属性windowBackground为launch.xml

<style name="StartAppTheme" parent="Theme.AppCompat.Light.NoActionBar">

<item name="android:fitsSystemWindows">false

<item name="android:windowNoTitle">true

<item name="android:windowIsTranslucent">false

<item name="android:windowFullscreen">true

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

</style>

3,在开屏页中设置全屏和状态栏透明

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

4,华为刘海屏兼容(在清单文件中设置给开屏activity)

<meta-data android:name="android.notch_support" android:value="true"/>

通过以上四个步骤,能消除应用启动过程中的黑白屏闪烁问题,并实现在未加载出启动页布局前展示windowbackground与加载成功启动页之间的无感切换。

项目中使用的

<style name="SplashStyle" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowBackground">@drawable/bg_splash</item>
</style>

bg_splash.xml文件:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <solid android:color="#FFFFFF"/>
        </shape>
    </item>
    <item
        android:bottom="40dp">
        <bitmap
            android:gravity="bottom"
            android:src="@mipmap/img_splan_bottom"/>
    </item>
</layer-list>
注册文件中的开屏 配置:
<activity
    android:name=".activity.SplanActivity"
    android:screenOrientation="portrait"
    android:theme="@style/SplashStyle"><!--android:theme="@style/SplashStyle"-->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>



猜你喜欢

转载自blog.csdn.net/yanxiangxue/article/details/105945688