启动页主要包括以下内容:
- 把启动页全屏
- 延迟进入主页
- 根据具体逻辑是进入主页还是引导页还是登录页
- 适配刘海屏
启动页全屏
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 刘海屏适配全攻略