安卓开发入门基础之欢迎界面定时器简单设计
程序员文章站
2022-05-04 19:54:54
...
Welcome.xml布局
- 布局构思比较随意。在垂直的线性布局右上角合适位置放置一个"跳过"文本框即可
Welcome.java
- 进行相关的获取控件,此处不一 一做介绍,直接上代码+简单注释
- 这里的Timer其实是一个调度器
Timer timer = new Timer();
private Handler handler;
private Runnable runnable;
private int tiaoguo_time = 6; //跳过倒计时提示6秒
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
// initView(); //获取控件自定义函数,此处省略
timer.schedule(task, 0, 1000); //等待时间一秒,停顿时间一秒
//5s后自动跳过欢迎界面
handler = new Handler();
handler.postDelayed(runnable = new Runnable() {
@Override
public void run() {
Intent intent = new Intent(welcome.this, MainActivity.class);
startActivity(intent);
finish();
}
}, 5000);
}
- 还需要使用到多线程的TimerTask这个抽象类,它实现了Runnable接口,所以具备了多线程的能力。
- 这里直接实现一个TimerTask(当然,你可以实现多个TimerTask,多个TimerTask可以被一个Timer会被分配到多个Timer中被调度,Timer的实现机制其实就是内部的调度机制)
- 然后再去编写run方法,每秒执行一次,当然你通过一个timer对象来操作多个timerTask,其实timerTask本身没什么意义,只是和timer集合操作的一个对象,实现它就必然有对应的run方法,以被调用
TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
tiaoguo_time--;
tiaoguo.setText(tiaoguo_time + "s 跳 过 ");
if (tiaoguo_time < 1) {
timer.cancel();
tiaoguo.setVisibility(View.GONE);//倒计时到0隐藏字体
}
}
});
}
};
- 当然我们还要实现对点击了的情况的监听,停止计时器
/*点击跳过*/
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.tiaoguo:
//从欢迎界面跳转到首界面
Intent intent = new Intent(welcome.this, MainActivity.class);
startActivity(intent);
finish();
if (runnable != null) {
handler.removeCallbacks(runnable);
}
break;
default:
break;
}
}
效果图
- 类似下图实现效果,会自动减秒数
推荐阅读