栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android自定义倒计时按钮

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android自定义倒计时按钮

本文实例为大家分享了Android自定义倒计时按钮的具体代码,供大家参考,具体内容如下

效果

代码:

package com.dylan.frame.ui;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;

import java.util.Timer;
import java.util.TimerTask;


public class CountdownButton extends Button implements View.onClickListener {
 private long lenght = 60 * 1000;//默认倒计时时间;
 private long time;//倒计时时长
 private Timer timer;//开始执行倒计时
 private TimerTask timerTask;//每次倒计时执行的任务
 private String beforeText = "点击获取验证码";
 private String afterText = "秒后重新获取";
 private onClickListener onClickListener;//按钮点击事件
 
 private Handler handler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
   super.handleMessage(msg);
   CountdownButton.this.setText(time / 1000 + afterText);
   time -= 1000;
   if (time < 0) {
    CountdownButton.this.setEnabled(true);

    CountdownButton.this.setText(beforeText);

    clearTimer();
   }
  }
 };


 public CountdownButton(Context context) {
  super(context);
  this.setText(beforeText);
  setonClickListener(this);
 }

 public CountdownButton(Context context, AttributeSet attrs) {
  super(context, attrs);
  setonClickListener(this);
 }

 public CountdownButton(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
  setonClickListener(this);
 }

 
 private void clearTimer() {
  if (timerTask != null) {
   timerTask.cancel();
   timerTask = null;
  }
  if (timer != null) {
   timer.cancel();
   timer = null;
  }
 }

 
 public void setLenght(long lenght) {
  this.lenght = lenght;
 }

 
 public void setBeforeText(String beforeText) {
  this.beforeText = beforeText;
 }

 
 public void setAfterText(String afterText) {
  this.afterText = afterText;
 }

 
 @Override
 public void onClick(View v) {
  if (onClickListener != null) {
   onClickListener.onClick(v);
  }
  initTimer();
  this.setText(time / 1000 + afterText);
  this.setEnabled(false);
  timer.schedule(timerTask, 0, 1000);
 }

 
 private void initTimer() {
  time = lenght;
  timer = new Timer();
  timerTask = new TimerTask() {
   @Override
   public void run() {
    handler.sendEmptyMessage(1);
   }
  };
 }

 
 @Override
 public void setonClickListener(onClickListener onclickListener) {
  if (onclickListener instanceof CountdownButton) {
   super.setonClickListener(onclickListener);

  } else {
   this.onClickListener = onclickListener;
  }

 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/156212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号