解决引导页或者欢迎页在app刚打开时出现黑屏或者白屏现象,实现秒开效果

来源:互联网 发布:最新中国省市区数据库 编辑:程序博客网 时间:2024/05/29 16:58

 因为一打开应用的时候不会立即就能加载activity的onCreate的布局,所以会显示你app主题的白色或者黑色背景。

这时候去该应用的清单文件Manifest中设置一下启动页activity的theme

首先先在res/values/styles文件夹中新建一个样式

<style name="AppSplash" parent="android:Theme">
       <!-- 设置启动背景透明 -->
        <item name="android:windowIsTranslucent">true</item>

 <!-- 设置启动不要Title -->
        <item name="android:windowNoTitle">true</item>
    </style>

如果<style name="AppSplash" parent="android:Theme">报错,可以把android:Theme换成你sdk里面有的样式。没报错就接着往下看

然后在该启动activity中添加样式

<activity
            android:name="activity的包名"
            android:theme="@style/AppSplash"
            android:label="@string/app_name" >

 <!-- 设置为启动activity -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>


这样一开始点击的时候背景就是透明的,相当于没有了,不会显示黑色或者白色了。

当然这种方法只适用于启动时间比较短的。


时间长的就要使用设置背景图片了。

<style name="AppTheme.Common" /><style name="AppTheme.Common.Launch">    <item name="windowNoTitle">true</item>    <item name="android:windowFullscreen">false</item>    <item name="android:windowDisablePreview">false</item>    <item name="android:windowBackground">@drawable/login_bg</item></style>

把启动背景设置成和引导页图片一致就行

  <item name="android:windowBackground">@drawable/login_bg</item>
Activity的setContentView前面加上
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {    // 透明状态栏    getWindow().addFlags(            WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);    // 透明导航栏    getWindow().addFlags(            WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);    getWindow().getDecorView().setFitsSystemWindows(true);}





上面的代码是单独修改该启动activity的样式,不要去设置application的样式


最后的核心还是app性能优化,尽量少在application类里进行一些初始化耗时操作,以及减少主页view的复杂度,减少view绘制出来的耗时,以提高app真实的启动速度。


1 0