當前位置:首頁 » 安卓系統 » android倒計時實現

android倒計時實現

發布時間: 2022-10-25 11:59:14

Ⅰ android 倒計時器 設計

有三種實現方式:

第一種:通過Timer與TimerTask結合的方式進行實現
第二種:通過Handler與Message方式進行實現
第三種:通過CountdownTimer進行實現
示例
第一種:
timer.schele(task, 1000, 1000); // timeTask ,一秒執行一次,
TimerTask task = new TimerTask() {
@Override
public void run() {
}
}
第二種:
handler.sendMessageDelayed(message, 1000); //1秒後發送消息
final Handler handler = new Handler(){
public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
if(recLen > 0){ //如果倒計時沒到
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // 1秒後發送消息
}
}
super.handleMessage(msg);
}
};
第三種:
new CountdownTimer(30000, 1000) { //30秒倒計時,沒秒執行一次
public void onTick(long millisUntilFinished) { //每秒執行一次進該方法
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() { //倒計時結束。
mTextField.setText("done!");
}
}.start();

Ⅱ Android倒計時怎麼實現

有三種實現方式:

第一種:通過Timer與TimerTask結合的方式進行實現
第二種:通過Handler與Message方式進行實現
第三種:通過CountdownTimer進行實現
示例
第一種:
timer.schele(task, 1000, 1000); // timeTask ,一秒執行一次,
TimerTask task = new TimerTask() {
@Override
public void run() {
}
}
第二種:
handler.sendMessageDelayed(message, 1000); //1秒後發送消息
final Handler handler = new Handler(){
public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
if(recLen > 0){ //如果倒計時沒到
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // 1秒後發送消息
}
}
super.handleMessage(msg);
}
};
第三種:
new CountdownTimer(30000, 1000) { //30秒倒計時,沒秒執行一次
public void onTick(long millisUntilFinished) { //每秒執行一次進該方法
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() { //倒計時結束。
mTextField.setText("done!");
}
}.start();

Ⅲ android中怎麼實現倒計時怎麼按照小時分鍾

Android實現計時與倒計時的五種方法:

方法一
Handler與Message(不用TimerTask)

public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

Message message = handler.obtainMessage(1); // Message
handler.sendMessageDelayed(message, 1000);
}

final Handler handler = new Handler(){

public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
txtView.setText("" + recLen);

if(recLen > 0){
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // send message
}else{
txtView.setVisibility(View.GONE);
}
}

super.handleMessage(msg);
}
};
}
linux

方法二
Handler與Thread(不佔用UI線程)

public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

new Thread(new MyThread()).start(); // start thread
}

final Handler handler = new Handler(){ // handle
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
recLen++;
txtView.setText("" + recLen);
}
super.handleMessage(msg);
}
};

public class MyThread implements Runnable{ // thread
@Override
public void run(){
while(true){
try{
Thread.sleep(1000); // sleep 1000ms
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}catch (Exception e) {
}
}
}
}
}

方法三
Timer與TimerTask(Java實現)

public class timerTask extends Activity{

private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

timer.schele(task, 1000, 1000); // timeTask
}

TimerTask task = new TimerTask() {
@Override
public void run() {

runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
recLen--;
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
});
}
};
}
方法四
TimerTask與Handler(不用Timer的改進型)

public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

timer.schele(task, 1000, 1000); // timeTask
}

final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
}
};

TimerTask task = new TimerTask() {
@Override
public void run() {
recLen--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
}
方法五
Handler與Runnable(最簡單型)

public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

handler.postDelayed(runnable, 1000);
}

Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
recLen++;
txtView.setText("" + recLen);
handler.postDelayed(this, 1000);
}
};
}
計時與倒計時

方法1,方法2和方法3,都是倒計時

方法4,方法5,都是計時

計時和倒計時,都可使用上述方法實現(代碼稍加改動)

UI線程比較

方法1,方法2和方法3,都是在UI線程實現的計時;

方法4和方法5,是另開Runnable線程實現計時

實現方式比較

方法1,採用的是Java實現,即Timer和TimerTask方式;

其它四種方法,都採用了Handler消息處理

推薦使用

如果對UI線程交互要求不很高,可以選擇方法2和方法3

如果考慮到UI線程阻塞,嚴重影響到用戶體驗,推薦使用方法4,另起線程單獨用於計時和其它的邏輯處理

方法5,綜合了前幾種方法的優點,是最簡的

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:513
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:15
linux485 發布:2025-07-05 14:38:28 瀏覽:296
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:747
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:421
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:671
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:229
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:672
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:273
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:823