本篇文章为大家展示了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; /** * 自定义倒计时按钮 * <p/> * * @author Dylan * <p/> * [佛祖保佑 永无BUG] * Created by Dylan on 2015/11/5 0005. */ 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; } } /** * 设置倒计时时长 * * @param lenght 默认毫秒 */ public void setLenght(long lenght) { this.lenght = lenght; } /** * 设置未点击时显示的文字 * * @param beforeText */ public void setBeforeText(String beforeText) { this.beforeText = beforeText; } /** * 设置未点击后显示的文字 * * @param beforeText */ public void setAfterText(String afterText) { this.afterText = afterText; } /** * 点击按钮后的操作 * * @param v */ @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); } }; } /** * 设置监听按钮点击事件 * * @param onclickListener */ @Override public void setOnClickListener(OnClickListener onclickListener) { if (onclickListener instanceof CountdownButton) { super.setOnClickListener(onclickListener); } else { this.onClickListener = onclickListener; } } }
上述内容就是Android中怎么自定义一个倒计时按钮,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。