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

首頁 > 系統(tǒng) > Android > 正文

Android自定義控件實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)

2019-10-23 18:34:29
字體:
供稿:網(wǎng)友

今天給大家?guī)硪粋€(gè)新的控件——驗(yàn)證碼倒計(jì)時(shí),先看下效果圖

1 效果演示

Android,驗(yàn)證碼,倒計(jì)時(shí)

2 使用方式

<com.landptf.view.CountDownM android:id="@+id/cdm_identifying_code" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_alignParentRight="true" android:text="獲取驗(yàn)證碼" landptf:backColor="@color/colorPrimary" landptf:countDownSeconds="10"/>CountDownM cdmIdentifyingCode = (CountDownM) findViewById(R.id.cdm_identifying_code);if (cdmIdentifyingCode != null) { cdmIdentifyingCode.setOnClickListener(new CountDownM.OnClickListener() {  @Override  public void onClick(View v) {   Toast.makeText(CountDownMTestActivity.this, "驗(yàn)證碼發(fā)送成功", Toast.LENGTH_SHORT).show();  } });}

以上幾行代碼即可實(shí)現(xiàn)倒計(jì)時(shí)的功能,這里面我們可以設(shè)置背景色以及倒計(jì)時(shí)的總時(shí)長。

3 實(shí)現(xiàn)方法

/** * Created by landptf on 2017/03/15. * 獲取驗(yàn)證碼倒計(jì)時(shí)控件 */public class CountDownM extends ButtonM { private OnClickListener onClickListener = null; private CountDownTimer countDownTimer; /**  * 倒計(jì)時(shí)總時(shí)長  */ private int countDownSeconds = 60; /**  * 按鈕的背景色  */ private int backColor = 0; public interface OnClickListener{  void onClick(View v); } public CountDownM(Context context) {  this(context, null); } public CountDownM(Context context, AttributeSet attrs) {  this(context, attrs, 0); } public CountDownM(Context context, AttributeSet attrs, int defStyle) {  super(context, attrs, defStyle);  TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.countDownM, defStyle, 0);  if (a != null) {   //設(shè)置背景色   ColorStateList colorList = a.getColorStateList(R.styleable.countDownM_backColor);   if (colorList != null) {    backColor = colorList.getColorForState(getDrawableState(), 0);    if (backColor != 0) {     setBackColor(backColor);    }   } else {    setBackColor(getResources().getColor(R.color.mainColor));   }   //獲取倒計(jì)時(shí)總時(shí)長   int countDownSeconds = a.getInteger(R.styleable.countDownM_countDownSeconds, 60);   setCountDownSeconds(countDownSeconds);   a.recycle();  }  //設(shè)置文字顏色  setTextColor(getResources().getColor(android.R.color.white));  //設(shè)置位置相關(guān)屬性  setGravity(Gravity.CENTER);  setPadding(ConvertM.dp2px(context, 8), 0, ConvertM.dp2px(context, 8), 0);  setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    if (onClickListener != null) {     onClickListener.onClick(v);    }    //點(diǎn)擊后開始計(jì)時(shí)    start();   }  }); } /**  * 設(shè)置倒計(jì)時(shí)總時(shí)長  * @param countDownSeconds  */ public void setCountDownSeconds(int countDownSeconds){  this.countDownSeconds = countDownSeconds; } /**  * 設(shè)置背景色  * @param backColor  */ @Override public void setBackColor(int backColor) {  this.backColor = backColor;  super.setBackColor(backColor); } /**  * 停止倒計(jì)時(shí)  */ public void stop(){  countDownTimer.cancel();  resetButton(); } public void setOnClickListener(OnClickListener l){  this.onClickListener = l; } private void start(){  setEnabled(false);//設(shè)置不能點(diǎn)擊  countDownTimer = new CountDownTimer(countDownSeconds * 1000, 1000) {   @Override   public void onTick(long millisUntilFinished) {    setText(millisUntilFinished / 1000 + getResources().getString(R.string.count_down_m_recapture_after));//設(shè)置倒計(jì)時(shí)時(shí)間    //設(shè)置按鈕為灰色,這時(shí)是不能點(diǎn)擊的    CountDownM.super.setBackColor(Color.GRAY);    Spannable span = new SpannableString(getText().toString());//獲取按鈕的文字    span.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//講倒計(jì)時(shí)時(shí)間顯示為紅色    setText(span);   }   @Override   public void onFinish() {    resetButton();   }  };  countDownTimer.start(); } private void resetButton(){  setText(getResources().getString(R.string.count_down_m_recapture));  setEnabled(true);//重新獲得點(diǎn)擊  if (backColor != 0) {   setBackColor(backColor);//還原背景色  } else {   setBackColor(getResources().getColor(R.color.mainColor));//還原背景色  } }}

代碼比較短,這里面繼承了ButtonM,有不了解的可以看一下我之前的博客
Android自定義控件系列(一)—Button七十二變

全部代碼已托管到開源中國的碼云上,歡迎下載,地址:https://git.oschina.net/landptf/landptf.git

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 绥中县| 扶沟县| 巴中市| 吉首市| 枣强县| 灌南县| 增城市| 白山市| 德格县| 洛阳市| 岢岚县| 沧州市| 屏山县| 崇信县| 图木舒克市| 登封市| 绵竹市| 博兴县| 高要市| 蒲江县| 洛宁县| 宁乡县| 枣庄市| 黄浦区| 石景山区| 元朗区| 醴陵市| 文山县| 广宗县| 清苑县| 巴彦淖尔市| 玛沁县| 武威市| 黄平县| 美姑县| 峡江县| 万宁市| 台北市| 房产| 衡水市| 东至县|