標籤:
安卓實現計數器有四種方式,直接給代碼
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);}
Android計數器的實現(倒計時)