啓動頁主要包括以下內容:
- 把啓動頁全屏
- 延遲進入主頁
- 根據具體邏輯是進入主頁還是引導頁還是登錄頁
- 適配劉海屏
啓動頁全屏
values目錄下的styles.xml文件中添加AppThemeFull樣式
<!--Full Style Activity -->
<style name="AppThemeFull" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
在AndroidManifest.xml文件中使用AppThemeFull樣式
<activity
android:name=".ui.IndexActivity"
android:theme="@style/AppThemeFull">
...
延遲進入主頁
private static final int SKIP_MAIN = 1000;
private Handler mHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
switch (message.what) {
case SKIP_MAIN:
startMain();
break;
}
return false;
}
});
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index);
mHandler.sendEmptyMessageDelayed(SKIP_MAIN, 2 * 1000);
}
啓動頁後邏輯
/**
* 進入主頁
*/
private void startMain() {
//1.判斷App是否第一次啓動 install - first run
boolean isFirstApp = SpUtils.getInstance().getBoolean(Constants.SP_IS_FIRST_APP, true);
Intent intent = new Intent();
if (isFirstApp) {
//跳轉到引導頁
intent.setClass(this, GuideActivity.class);
//非第一次啓動
SpUtils.getInstance().putBoolean(Constants.SP_IS_FIRST_APP, false);
} else {
//2.如果非第一次啓動,判斷是否曾經登錄過
String token = SpUtils.getInstance().getString(Constants.SP_TOKEN, "");
if (TextUtils.isEmpty(token)) {
//跳轉到登錄頁
intent.setClass(this, LoginActivity.class);
} else {
//跳轉到主頁
intent.setClass(this, MainActivity.class);
}
}
startActivity(intent);
finish();
}
適配劉海屏
參考:
Android 劉海屏適配全攻略