Android闪屏Activity实现秒开

Posted Hello

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android闪屏Activity实现秒开相关的知识,希望对你有一定的参考价值。

1 <!--SplashActivity Theme-->
2 <style name="SplashTheme" parent="AppTheme">
3     <!-- 欢迎页背景-->
4     <item name="android:windowBackground">@drawable/bg_splash</item>
5     <item name="android:windowFullscreen">true</item>
6     <!-- <item name="android:windowIsTranslucent">true</item> --> <!-- 透明背景不要了 -->
7 </style>
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 3     <!-- 背景颜色 -->
 4     <item android:drawable="@color/color_ToolbarLeftItem" />
 5 
 6     <item>
 7         <!-- 图片 -->
 8         <bitmap
 9             android:antialias="true"
10             android:gravity="center"
11             android:src="@drawable/ic_splash" />
12     </item>
13 </layer-list>

SplashActivity 不要设置setContentView(R.layout.activity_main);

数据加载放在继承的Application里面,新开线程,在SplashActivity 里面调用即可,如下:

 1 ackage com.johnson.kuyqi.mvp.view.activities;
 2 
 3 import android.content.Intent;
 4 import android.os.Bundle;
 5 import android.os.Handler;
 6 import android.support.annotation.Nullable;
 7 import android.util.Log;
 8 
 9 import com.johnson.kuyqi.app.base.BaseActivity;
10 import com.johnson.kuyqi.app.kuyqiapp.KuyqiApp;
11 
12 /**
13  * Created by HelloWord on 2016/12/12.
14  */
15 
16 public class SplashActivity extends BaseActivity {
17 
18     private static final int SPLASH_SHOW_TIME = 2000;// SplashActivity最小显示时间
19     private long mStartTime;// 开始时间
20 
21 
22     @Override
23     protected void onCreate(@Nullable Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         mStartTime = System.currentTimeMillis();//记录开始时间,
26         Log.i("tag", "mStartTime=" + mStartTime);
27         KuyqiApp.getInstance().initData(mHandler);//开始加载数据
28     }
29 
30     @Override
31     protected void initFoundView() {
32 
33     }
34 
35     @Override
36     protected void initView() {
37 
38     }
39 
40     @Override
41     protected void initEvent() {
42 
43     }
44 
45     private Handler mHandler = new Handler() {
46         public void handleMessage(android.os.Message msg) {
47             switch (msg.what) {
48                 case KuyqiApp.INIT_DATA_SCUESS:// 如果城市列表加载完毕,就发送此消息
49                     long loadingTime = System.currentTimeMillis() - mStartTime;// 计算一下总共花费的时间
50                     if (loadingTime < SPLASH_SHOW_TIME) {// 如果比最小显示时间还短,就延时进入MainActivity,否则直接进入
51                         mHandler.postDelayed(goToMainActivity, SPLASH_SHOW_TIME - loadingTime);
52                     } else {
53                         mHandler.post(goToMainActivity);
54                     }
55                     break;
56                 default:
57                     break;
58             }
59         }
60     };
61 
62     /**
63      * 进入下一个Activity
64      */
65     Runnable goToMainActivity = new Runnable() {
66 
67         @Override
68         public void run() {
69             SplashActivity.this.startActivity(new Intent(SplashActivity.this, MainActivity.class));
70             finish();
71         }
72     };
73 
74 
75 }
 1 public static void initData(final Handler mHandler) {
 2 
 3     new Thread() {
 4         @Override
 5         public void run() {
 6             super.run();
 7             mHandler.sendEmptyMessage(INIT_DATA_SCUESS);
 8 
 9         }
10     }.start();
11 }

 

以上是关于Android闪屏Activity实现秒开的主要内容,如果未能解决你的问题,请参考以下文章

Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段

闪屏页和右上角的倒计时跳转

android app 闪屏

是否有在单个活动中处理多个片段的 Android 设计模式?

记录一下Kotiln实现闪屏界面

Android- SplashPage实现应用秒开-3步