安卓实现计数器有四种方式,直接给代码
1、使用Thread+Handler
private int number = 0; private Handler handler1 = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); tvNumber.setText(msg.what + ""); } }; private void counter1() { number = 4;new Thread() { public void run() { while (number >= 0) { Message msg = handler1.obtainMessage(); msg.what = number; handler1.sendMessage(msg); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } number--;// 数字 } }; }.start(); }
2、仅使用Handler
private void counter2() { Message msg = handler2.obtainMessage(); msg.what = 4; handler2.sendMessageDelayed(msg, 1000); } Handler handler2 = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); int num = msg.what; tvNumber.setText(num + ""); if (num > 0) { num--; Message message = handler2.obtainMessage(); message.what = num; handler2.sendMessageDelayed(message, 1000); } }; };
3、使用android.os.CountDownTimer类实现
private void counter3() { new CountDownTimer(5000, 1000) { public void onTick(long millisUntilFinished) { tvNumber.setText(millisUntilFinished / 1000 + ""); } public void onFinish() { tvNumber.setText("0"); } }.start(); }
4、使用Timer+handler
private int number = 0; private TimerTask timerTask; private Timer timer; private void counter4() { number = 4; timerTask = new TimerTask() { @Override public void run() { if(number >= 0){ Message msg = handler1.obtainMessage(); msg.what = number; handler1.sendMessage(msg); number --; } } }; timer = new Timer(); timer.schedule(timerTask, 0, 1000); }
时间: 2024-11-06 09:02:16