Welcome

首页 / 移动开发 / Android / Android实现倒计时方法汇总

Android开发中经常会有倒计时的功能,下面将总结出常见的集中实现方式。
1.直接使用Handler的消息机制来实现
xml布局中文件如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="clickButton"android:text="开始计时" /></LinearLayout>
java代码如下:
import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;public class FirstActivity extends Activity{private Button button;private int count = 60;private int COUNT_TIME = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);button = (Button) findViewById(R.id.button);}private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {if(count <= 0){count = 60;button.setText("重新计时");button.setClickable(true);return;}count--;button.setText(""+count);sendEmptyMessageDelayed(COUNT_TIME,1000);}};public void clickButton(View view){handler.sendEmptyMessage(COUNT_TIME);button.setClickable(false);}}
2.使用Timer和TimerTask,结合handler一起实现倒计时
import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;public class FirstActivity extends Activity{private Button button;private int count = 30;private int COUNT_TIME = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);button = (Button) findViewById(R.id.button);}private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {button.setText(""+count);if(count <= 0){count = 30;button.setClickable(true);button.setText("重新计时");timerTask.cancel(); //取消该任务}}};private Timer timer = new Timer();private TimerTask timerTask;public void clickButton(View view){button.setClickable(false);timerTask = new TimerTask() {@Overridepublic void run() {count--;handler.sendEmptyMessage(COUNT_TIME);}};timer.schedule(timerTask,0,1000); //0秒后,每过一秒钟执行一次该任务}@Overrideprotected void onDestroy() {super.onDestroy();//释放资源if(timerTask != null){timerTask.cancel();timerTask = null;}if(timer != null){timer.cancel();timer = null;}}}
3.使用android自带的原生倒计时类 CountDownTimer
import android.app.Activity;import android.os.Bundle;import android.os.CountDownTimer;import android.view.View;import android.widget.Button;public class FirstActivity extends Activity{private Button button;private CountDownTimer timer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);button = (Button) findViewById(R.id.button);}public void clickButton(View view){button.setClickable(false);//第一个参数:倒计时的毫秒数;第二个参数:接收onTick回调的时间间隔timer = new CountDownTimer(30000, 10) { public void onTick(long millisUntilFinished) { button.setText(millisUntilFinished / 1000 + "秒"); } public void onFinish() { button.setText("重新计时"); button.setClickable(true); } };timer.start();}@Overrideprotected void onDestroy() {super.onDestroy();if(timer != null){timer.cancel();}}}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。