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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM