public class SplashActivity extends BaseActivity<ActivitySplashBinding> implements View.OnClickListener {
private int recLen = 3; //倒计时提示为3秒
private static final long DELAYMILLIS = 3000;
private TextView mTextView;
Timer timer = new Timer();
private Handler mHandler;
private Runnable mRunnable;
@Override
protected void initView() {
//定义全屏参数
int flag= WindowManager.LayoutParams.FLAG_FULLSCREEN;
//设置当前窗体为全屏显示
getWindow().setFlags(flag, flag);
mTextView = binding.tv;
mTextView.setOnClickListener(this);
timer.schedule(task, 1000,1000); //等待1秒,每间隔1秒执行一次task
//正常情况下不点击跳过
mHandler = new Handler();
//从闪屏页跳转到登录界面或首页
mHandler.postDelayed(mRunnable = () -> startActivity(), DELAYMILLIS);
}
// TimerTask类表示一个在指定时间内执行的task
private TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(() -> { //在UI线程中进行
recLen--;
mTextView.setText("点击跳过" + recLen);
if (recLen < 0) {
timer.cancel();
mTextView.setVisibility(View.GONE);
}
});
}
};
@Override
public int initContentView(Bundle savedInstanceState) {
return R.layout.activity_splash;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv:
startActivity();
if (mRunnable != null){
//防止内存泄漏
mHandler.removeCallbacks(mRunnable);
}
break;
default:
break;
}
}
private void startActivity() {
if (//判断是否为登录状态) {
//已是登录状态
startActivity(MainActivity.class);
} else {
//非登录状态
startActivity(LoginActivity.class);
}
SplashActivity.this.finish();
}
}
timer.schedule(task, 1000,1000);
开启定时器需要三个参数
- 1.这个参数是你要做的事情,这里我做的是更改TextView中的信息
- 2.这个参数是你要多长时间后执行这个定时器,这里写的是1000,那么就是1秒后执行我的定时器。
- 3.这个参数是每次执行时间的间隔,这里我写的是1000,所以每间隔1秒更改一次TextView中的信息。