使用Handler + Runnable 實現倒計時的操作,
1: 實現邏輯: 使用Handler 的post()或postDelayed()方法 啓動Runnable , 在Runnable中進行開始循環計時。
代碼:
package com.example.lesson27_timehandler; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.support.annotation.NonNull; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast;
/** * Created by lishengbo on 2019/7/30. */ public class DialogActivity extends Dialog { private int textTime = 0; private int maxTime = 60; private TextView view; public DialogActivity(@NonNull Context context) { super(context,R.style.DialogStart); //R.style.DialogStart 設置顯示的dialog樣式 } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_layout); view = findViewById(R.id.view); //啓動Runnable mHandler.post(runnable); } private Handler mHandler = new Handler(); private Runnable runnable = new Runnable() { @Override public void run() { mHandler.postDelayed(this,1000);//一秒鐘循環計時一次 textTime = maxTime --; String s = String.valueOf(textTime); view.setText(s); //顯示時間倒計時 if (textTime == 0){ dismiss(); //計時完成關閉dialog } } }; @Override protected void onStop() { mHandler.removeCallbacks(runnable); super.onStop(); } @Override public void show() { super.show(); } }