美文网首页
启动页白屏及黑屏解决

启动页白屏及黑屏解决

作者: Batashi | 来源:发表于2018-05-17 15:03 被阅读0次

    一.白屏及黑屏产生的原因:

    当Activity启动的时候不能马上加载layout。而黑屏或者白屏是AppTheme的默认样式,代码如下:
    <item name="android:windowBackground">@color/background_material_light</item>
    具体颜色值为:<color name="material_grey_50">#fffafafa</color>
    于是,当layout还没加载完成的时候就会显示相应的主题颜色(黑/白屏)。
    

    二.解决方案:

    1.像微信那样,把启动页的窗口背景设为透明。这样,当点击app图标时,因为背景是透明的,所以看不到
    任何东西,等layout完全加载好了就可以看到真正的界面了。
    
    a.先设置style:
    <style name="SplashTheme.Translucent" parent="AppTheme">
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:windowIsTranslucent">true</item>
    </style>
    
    b.在启动activity加入该Theme:
    <activity android:name=".activity.MainActivity"
                android:theme="@style/SplashTheme.Translucent">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
    
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
    </activity>
    
    c.千万别忘了在真正的layout添加非透明的背景色,不然界面显示时是透明的:
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white">
    ......
    </android.support.constraint.ConstraintLayout>
    
    2.把启动页的主题背景换成图片。当点击app图标时,在layout加载完毕之前都是显示这张背景图片。
    当layout加载完毕之后,背景图片才消失,同时显示真正的界面。
    a.先设置style:
    <style name="SplashTheme.NotTranslucent" parent="AppTheme">
            <item name="android:windowBackground">@drawable/welcome</item>
            <item name="android:windowIsTranslucent">false</item>
    </style>
    
    b.在启动activity加入该Theme:
    <activity android:name=".activity.MainActivity"
                android:theme="@style/SplashTheme.NotTranslucent">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
    
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
    </activity>
    
    c.千万别忘了在真正的layout添加非透明的背景色,不然界面显示时依然能看到欢迎页那张图片:
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white">
    ......
    </android.support.constraint.ConstraintLayout>
    

    相关文章

      网友评论

          本文标题:启动页白屏及黑屏解决

          本文链接:https://www.haomeiwen.com/subject/fuubdftx.html