在發現這個類之前,一直是用的handler,子線程發消息,UI線程進行倒計時的顯示工作。前幾天在做一個倒計時顯示的時候發現了這個類,用起來非常方便
翻看了下源代碼。內部已經幫我們實現了handler的子線程操作
CountDownTimer這個類用起來非常easy。兩個參數。幾句代碼搞定,例如以下:
CountDownTimer(long millisInFuture, long countDownInterval)
知道這兩個參數的意思那就非常好辦了,new一個CountDownTimer對象就會生成兩個回調函數
public void onTick(long millisUntilFinished) { // TODO Auto-generated method stub } @Override public void onFinish() { // TODO Auto-generated method stub }
第一個方法 就是在倒計時的時候調用的,每倒計時一次要進行什么操作。就能夠放在這里面做。通常是對UI線程進行一些操作。比方對文本進行更改,達到倒計時的效果
第二個方法是倒計時完畢后調用。倒計時完畢須要進行什么操作都能夠寫在里面。
當然,最后一定要記得start() 否則線程不會開始
所有代碼:
public class MainActivity extends Activity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); /** 倒計時60秒,一次1秒 */ CountDownTimer timer = new CountDownTimer(60*1000, 1000) { @Override public void onTick(long millisUntilFinished) { // TODO Auto-generated method stub tv.setText("還剩"+millisUntilFinished/1000+"秒"); } @Override public void onFinish() { tv.setText("倒計時完畢了"); } }.start(); } }
效果圖: