Android Handler 實現時間倒計時

 

使用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();
    }
}

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章