Android studio实现计数器功能
我们使用原生计时器CountDownTimer
1.首先自己建立一个布局TextView------(countdown我自己定义的名字)可以显示文字
2.然后自己写一个类Mycount继承自CountDownTimer
class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@SuppressLint("SetTextI18n")
@Override
public void onTick(long millisUntilFinished) {
Date date = new Date(millisUntilFinished);
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String str = sdf.format(date);
System.out.println(str);
countdown.setText(millisUntilFinished / 1000 +"S");
}
@SuppressLint("SetTextI18n")
@Override
public void onFinish() {
countdown.setText("finish");
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mc.cancel();
}
protected void onDestroy()是退出活动前消除该计时器,以至于下次进入该活动重新计数。
3.在Main找到该布局id,创建Mycount实例,调用Mycount中的方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
countdown = findViewById(R.id.countdown);
mc = new MyCount(180000, 1000);//计时器
mc.start();
}
4.代码汇总
public class resultActivity extends AppCompatActivity {
private countdown;
private MyCount mc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
countdown = findViewById(R.id.countdown);
mc = new MyCount(180000, 1000);//计时器
mc.start();
}
}
class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@SuppressLint("SetTextI18n")
@Override
public void onTick(long millisUntilFinished) {
Date date = new Date(millisUntilFinished);
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String str = sdf.format(date);
System.out.println(str);
countdown.setText(millisUntilFinished / 1000 +"S");
}
@SuppressLint("SetTextI18n")
@Override
public void onFinish() {
countdown.setText("finish");
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mc.cancel();
}
这里定义了180S,显示也是179S,178S,176S…Finish