2025年4月1日 星期二 乙巳(蛇)年 正月初二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

android 好用的自定义倒计时工具(验证码发送倒计时等等)

时间:02-13来源:作者:点击数:41

可用于短信发送倒计时,请求倒计时等各个地方,使用方便,与组件解耦。

  • import android.os.CountDownTimer;
  • import android.view.View;
  • /**
  • * 倒计时计时工具
  • * @author wjh 2021-01-29
  • *
  • * 当Activity/Fragment销毁的时候记得 调用CountDownTimerUtils.cancle
  • * Fragment在onDestoryView时调用 视图被移除时(reason:CountDownTimerUtils调用可能会涉及Ui的改变)
  • *
  • */
  • public class CountDownTimerUtils extends CountDownTimer {
  • private View view;
  • private long countDownInterval;
  • private OnFinishListener listener;
  • private OnTickListener tickListener;
  • public interface OnFinishListener{
  • void onFinishListener(View v);
  • }
  • public interface OnTickListener{
  • void onTickListener(View v, long millisUntilFinished, long countDownInterval);
  • }
  • public CountDownTimerUtils(View view, long millisInFuture, long countDownInterval, OnTickListener tickListener, OnFinishListener listener){
  • super(millisInFuture,countDownInterval);
  • this.view=view;//倒计时相关组件 可以是TextView Button 等等
  • this.countDownInterval=countDownInterval;//倒计时时长
  • this.listener=listener;//倒计时结束监听
  • this.tickListener=tickListener;//计时监听 相隔一秒调用
  • }
  • @Override
  • public void onTick(long millisUntilFinished) {
  • tickListener.onTickListener(view,millisUntilFinished,countDownInterval);
  • }
  • @Override
  • public void onFinish() {
  • listener.onFinishListener(view);
  • }
  • }

使用

  • //对当前获取验证码控件进行倒计时相关设置
  • CountDownTimerUtils countDownTimerUtils = new CountDownTimerUtils(get_auth_code_tv, 60000, 1000, new CountDownTimerUtils.OnTickListener() {
  • @Override
  • public void onTickListener(View v, long millisUntilFinished, long countDownInterval) {
  • TextView view = (TextView) v;
  • view.setTextColor(ContextCompat.getColor(view.getContext(), R.color.black));
  • //设置不可用
  • view.setEnabled(false);
  • //设置倒计时时间
  • view.setText("已发送(" + millisUntilFinished / countDownInterval + ")");
  • }
  • }, new CountDownTimerUtils.OnFinishListener() {
  • @Override
  • public void onFinishListener(View v) {
  • TextView view = (TextView) v;
  • view.setTextColor(ContextCompat.getColor(view.getContext(), R.color.enabled_2_color));
  • view.setText(R.string.get_auth_code);
  • //重新获得点击
  • view.setEnabled(true);
  • }
  • });
  • countDownTimerUtils.start();//在需要的地方调用该方法启动倒计时
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门