即拿即用-App启动优化最佳实践

来源:互联网 发布:中国吸血鬼网络剧 编辑:程序博客网 时间:2024/04/29 21:15

应用在启动的时候,有时候有白屏/黑屏,之所以会看到白屏或者黑屏,是和我们的主题有关系的,因为系统默认使用的主题,背景色就是白色/黑色。那么我们自定义一个主题,让默认的样式就是我们想要的,就优化了白屏/黑屏的问题。

设置闪屏页SplashScreenActivity的style;

<!--应用Style设置开始-->    <!-- 应用主题-->    <style name="AppTheme" parent="AppTheme.Base"></style>    <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">        <!-- 隐藏ActionBar -->        <item name="windowActionBar">false</item>        <item name="android:windowNoTitle">true</item>        <!-- 使用 API Level 22 编译的话,要拿掉前缀字 -->        <item name="windowNoTitle">true</item>        <!-- 状态栏颜色-->        <item name="colorPrimary">@color/colorPrimary</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>        <!--应用默认颜色-->        <item name="android:windowBackground">@color/white</item>        <item name="android:fitsSystemWindows">true</item>        <!--界面切换方式-->        <item name="android:windowAnimationStyle">@style/translate</item>    </style>    <!-- 闪屏页 -->    <style name="StartAppTheme" parent="AppTheme">        <item name="android:windowIsTranslucent">true</item>        <item name="android:windowNoTitle">true</item>    </style>

AndroidManifest.xml

     <activity            android:name=".activity.SplashActivity"            android:theme="@style/StartAppTheme" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>

SplashScreenActivity

package com.tibi.notebook.activity;import android.content.Intent;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.WindowManager;import com.tibi.notebook.R;public class SplashScreenActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 不显示系统的标题栏,保证windowBackground和界面activity_main的大小一样,显示在屏幕不会有错位(去掉这一行试试就知道效果了)        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);        setContentView(R.layout.activity_splash_screen);        //模拟验证账号密码,做一些工具的初始化等等的操作        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                startActivity(new Intent(SplashScreenActivity.this, HomeActivity.class));                finish();            }        }, 2000);    }}

参考

  • 《一触即发 App启动优化最佳实践》
0 0
原创粉丝点击