Splash开屏页,点击跳过

Screenshot.png
public class SplashActivity extends BaseActivity 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中的信息。

你可能感兴趣的:(Splash开屏页,点击跳过)