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 }