国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 簡單封裝獲取驗證碼倒計時功能

2019-12-12 01:16:46
字體:
來源:轉載
供稿:網友

效果如下圖所示:

 

如圖所示的效果相信大家都不陌生,我們可以使用很多種方法去實現此效果,這里自己采用 CountDownTimer 定時器簡單封裝下此效果,方便我們隨時調用。

首頁先在 attrs.xml 中定義下所需的幾個屬性:

<resources> <declare-styleable name="CountDownButton">  <attr name="millisinfuture" format="integer"/>  <attr name="countdowninterva" format="integer"/>  <attr name="normalColor" format="color"/>  <attr name="countDownColor" format="color"/> </declare-styleable></resources>

下面是實現的具體代碼,很簡單的一種方式,通俗易懂:

/** * Created by xiaolong on 2018/1/12. */@SuppressLint("AppCompatCustomView")public class CountDownButton extends Button{ //總時長 private long millisinfuture; //間隔時長 private long countdowninterva; //默認背景顏色 private int normalColor; //倒計時 背景顏色 private int countDownColor; //是否結束 private boolean isFinish; //定時器 private CountDownTimer countDownTimer; public CountDownButton(Context context) {  this(context,null); } public CountDownButton(Context context, AttributeSet attrs) {  this(context, attrs,0); } public CountDownButton(Context context, AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr);  TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CountDownButton,defStyleAttr,0);  //設置默認時長  millisinfuture = (long) typedArray.getInt(R.styleable.CountDownButton_millisinfuture,60000);  //設置默認間隔時長  countdowninterva = (long)typedArray.getInt(R.styleable.CountDownButton_countdowninterva,1000);  //設置默認背景色  normalColor = typedArray.getColor(R.styleable.CountDownButton_normalColor,android.R.color.holo_blue_light);  //設置默認倒計時 背景色  countDownColor = typedArray.getColor(R.styleable.CountDownButton_countDownColor,android.R.color.darker_gray);  typedArray.recycle();  //默認為已結束狀態  isFinish = true;  //字體居中  setGravity(Gravity.CENTER);  //默認文字和背景色  normalBackground();  //設置定時器  countDownTimer = new CountDownTimer(millisinfuture, countdowninterva) {   @Override   public void onTick(long millisUntilFinished) {    //未結束    isFinish = false;    setText((Math.round((double) millisUntilFinished / 1000) - 1) + "秒");    setBackgroundResource(countDownColor);   }   @Override   public void onFinish() {    //結束    isFinish = true;    normalBackground();   }  }; } private void normalBackground(){  setText("獲取驗證碼");  setBackgroundResource(normalColor); } public boolean isFinish() {  return isFinish; } public void cancel(){  countDownTimer.cancel(); } public void start(){  countDownTimer.start(); }}

一個簡單的調用方式:

public class MainActivity extends AppCompatActivity { private CountDownButton countDownButton; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  countDownButton = ((CountDownButton) findViewById(R.id.countDownButton));  countDownButton.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View view) {    //這里判斷是否倒計時結束,避免在倒計時時多次點擊導致重復請求接口    if (countDownButton.isFinish()) {     //發送驗證碼請求成功后調用     countDownButton.start();    }   }  }); } @Override protected void onDestroy() {  super.onDestroy();  if (!countDownButton.isFinish()) {   countDownButton.cancel();  } }}

這樣一個簡單的封裝就結束了,過程很簡單。這里主要是對 CountDownTimer 的使用練習,之前工作中一直沒有接觸過這個類。順便貼上源碼吧!

總結

以上所述是小編給大家介紹的Android 簡單封裝獲取驗證碼倒計時功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 温宿县| 达州市| 毕节市| 马龙县| 石阡县| 迭部县| 安岳县| 客服| 濉溪县| 威信县| 吉木乃县| 曲沃县| 石棉县| 公主岭市| 景谷| 宁阳县| 监利县| 翁牛特旗| 山东| 资源县| 梨树县| 泽库县| 花垣县| 恩施市| 汾西县| 甘孜| 咸丰县| 南华县| 申扎县| 凉城县| 凤山市| 福建省| 湄潭县| 崇信县| 紫云| 商南县| 屏南县| 钟山县| 松阳县| 炎陵县| 昌江|