Activity首页启动白屏或黑屏优化

启动白屏或者黑屏原因是启动初始化到界面显示需要一段时间,这段时间界面显示白屏或黑屏是由于Window的背景的主题色导致的。

方法一、将Window背景色设置成透明

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ......
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
</style>

方法二、先加载一个自定义的布局(空Activity作为启动Activity去跳转到首页),这个空Activity设置自己的主题

refer https://blog.csdn.net/wuliang756071448/article/details/74067058

方法三、SplashActivity启动页设置主题背景  用layer-list作为drawable元素,设置三层,底层设置背景,中层设置gravity,上层设置logo_icon

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    android:opacity="opaque"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!--这个item项会对内容进行缩放以适应其容器视图-->
    <item android:drawable="@color/colorPrimaryDark"/>
    <!--增加gravity 避免缩放-->
    <!--<item android:top="@dimen/splash_icon_margin_top">-->
        <!--<bitmap android:src="@drawable/splash_icon"-->
             <!--android:gravity="top|center_horizontal"/>-->
    <!--</item>-->

    <item >
        <bitmap android:src="@drawable/splash_icon"
            android:gravity="center"/>
    </item>

</layer-list>

编写主题

<style name="splash" parent="AppTheme.NoActionBar">

        <item name="android:windowBackground">@drawable/bg_splash</item>
        <item name="android:windowFullscreen">true</item>
        </style>

在Manifest中设置SplashActivity的主题

最后启动完成之后将主题改回来或者 

@Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme_NoActionBar);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
}

refer https://blog.csdn.net/qq_22797039/article/details/70162474

猜你喜欢

转载自blog.csdn.net/liangtianmeng/article/details/81355560