欢迎页面倒计时:
实现方式有很多种:
1.开一个子线程 每休眠1s 发一个handler消息出去 更改倒计时
2.不用开启子线程,使用handler发一个消息,在handler发延迟消息,在handle中构成一个递归
...
n.安卓中有一个专门做倒计时的类 CountDownTimer
我用的是最后一种:
首先,在欢迎界面写一个类实现CountDownTimer,里边有几个方法需要重写下
/* 定义一个倒计时的内部类 */接着,启动这个倒计时
class MyCount extends CountDownTimer {
/**
*
* @param millisInFuture
* 持续时长
* @param countDownInterval
* 间隔时长
*/
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
/**
* 在倒计时结束时调用
*/
@Override
public void onFinish() {
startActivity(new Intent(WelcomeActivity.this, MainActivity.class));
finish();
}
/**
* 每间隔countDownInterval会调用一次
*
* @param millisUntilFinished
* 已经过去了多长时间
*/
@Override
public void onTick(long millisUntilFinished) {
tv_skip.setText("跳过" + millisUntilFinished / 1000 + "s");
}
}
MyCount myCount = new MyCount(10000, 1000);// 创建一个倒计时 总时长10秒 间隔1秒最后 ,设置一个点击跳过
myCount.start();// 开启倒计时
tv_skip.setOnClickListener(new View.OnClickListener() {最后说说我在写这个东西的时候遇到 的一个问题
@Override
public void onClick(View v) {
myCount.cancel();// 点击之后跳过
startActivity(new Intent(WelcomeActivity.this,
MainActivity.class));
finish();
}
});
问题是无论是倒计时让它自然跳过,还是点击跳过,发现跳转总会卡顿一会,看代码看了半天,没看出问题.
后来发现,在最后时间到的时候,点击返回键,也不能返回,并且在demo中也没有这样的问题,后来看了下
主界面的代码打的log日志,发现在主界面,直接联网获取json联网9次,主界面是通过radiobutton和fragment
,组合才能的,但是一上去默认就将五个fragment全部加载出来了,我认为主界面在打开瞬间加载内容太多导致的.
后来我将主界面的改成 需要显示fragment就从集合中取,如果集合中没有,再去创建,而不是一上来就创建所有
的,果然这个问题也迎刃而解(这个不是我写的,其他人写的)
点击这里下载源代码