Android自定義倒計時按鈕
更新時間:2018年05月14日 15:02:38 作者:DylanAndroid
這篇文章主要為大家詳細介紹了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;
/**
* 自定義倒計時按鈕
* <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;//開始執(zhí)行倒計時
private TimerTask timerTask;//每次倒計時執(zhí)行的任務
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);
}
};
}
/**
* 設置監(jiān)聽按鈕點擊事件
*
* @param onclickListener
*/
@Override
public void setOnClickListener(OnClickListener onclickListener) {
if (onclickListener instanceof CountdownButton) {
super.setOnClickListener(onclickListener);
} else {
this.onClickListener = onclickListener;
}
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android 啟動另一個App/apk中的Activity實現(xiàn)代碼
這篇文章主要介紹了Android 啟動另一個App/apk中的Activity實現(xiàn)代碼的相關資料,需要的朋友可以參考下2017-04-04
Android使用MediaRecorder實現(xiàn)錄像功能
這篇文章主要為大家詳細介紹了Android使用MediaRecorder實現(xiàn)錄像功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
Android編程實現(xiàn)通知欄進度條效果的方法示例
這篇文章主要介紹了Android編程實現(xiàn)通知欄進度條效果的方法,結合實例形式較為詳細的分析了Android通知欄進度條效果的功能、布局相關實現(xiàn)方法與操作注意事項,需要的朋友可以參考下2018-02-02
自定義toast外形,多次點擊不會總是彈出toast的實現(xiàn)方法
下面小編就為大家?guī)硪黄远xtoast外形,多次點擊不會總是彈出toast的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
android RecyclerView的一些優(yōu)化點介紹
大家好,本篇文章主要講的是android RecyclerView的一些優(yōu)化點介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
Android應用的Material設計中圖片的相關處理指南
這篇文章主要介紹了Android應用的Material設計中圖片的相關處理指南,除了介紹新的方法外文中還給出了一些設計標準樣例僅供參考,需要的朋友可以參考下2016-04-04
android LabelView實現(xiàn)標簽云效果
這篇文章主要為大家詳細介紹了android LabelView實現(xiàn)標簽云效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Android 解決dialog彈出時無法捕捉Activity的back事件問題
這篇文章主要介紹了Android 解決dialog彈出時無法捕捉Activity的back事件問題的相關資料,需要的朋友可以參考下2016-11-11

