package com.cheikh.lazywaimai.widget; import android.content.Context; import android.util.AttributeSet; import android.widget.Button; import com.cheikh.lazywaimai.R; import com.cheikh.lazywaimai.util.CountDownTimer; public class CountDownTimerView extends Button { private CountDownTimer countDownTimer; private OnCountDownListener onCountDownListener; public CountDownTimerView(Context context) { super(context); } public CountDownTimerView(Context context, AttributeSet attrs) { super(context, attrs); } public CountDownTimerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public void countDown(long millisInFuture) { setEnabled(false); if (countDownTimer == null) { countDownTimer = new CountDownTimer() { @Override protected void onTick(long millisLeft) { int secondsLeft = (int) Math.ceil((double) millisLeft / 1000.0); setText(getResources().getString(R.string.btn_send_code_again, secondsLeft)); } @Override protected void onFinish() { setText(R.string.btn_again_send_code); if (onCountDownListener != null) { setEnabled(onCountDownListener.onCountDownFinishState()); } else { setEnabled(true); } } }; } countDownTimer.start(millisInFuture, 1000); } @Override public void setEnabled(boolean enabled) { if (enabled && countDownTimer != null && countDownTimer.isCountingDown()) { return; } super.setEnabled(enabled); } public void setOnCountDownListener(OnCountDownListener listener) { onCountDownListener = listener; } public interface OnCountDownListener { boolean onCountDownFinishState(); } }