亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2018年01月18日 09:41:23   作者:萌動小彩筆 關(guān)注  
倒計時效果相信大家都不陌生,我們可以使用很多種方法去實現(xiàn)此效果,這里自己采用 CountDownTimer 定時器簡單封裝下此效果,方便我們隨時調(diào)用。下面小編給大家分享android驗證碼倒計時封裝方法,感興趣的朋友一起看看吧

效果如下圖所示:

 

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

首頁先在 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>

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

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

一個簡單的調(diào)用方式:

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) {
    //這里判斷是否倒計時結(jié)束,避免在倒計時時多次點擊導(dǎo)致重復(fù)請求接口
    if (countDownButton.isFinish()) {
     //發(fā)送驗證碼請求成功后調(diào)用
     countDownButton.start();
    }
   }
  });
 }
 @Override
 protected void onDestroy() {
  super.onDestroy();
  if (!countDownButton.isFinish()) {
   countDownButton.cancel();
  }
 }
}

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

總結(jié)

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

相關(guān)文章

  • Android入門之bindService的用法詳解

    Android入門之bindService的用法詳解

    indService大家可以認(rèn)為它是和Android的一個共生體。即這個service所屬的activity如果消亡那么bindService也會消亡。本文將通過簡單的例子帶大家了解一下bindService的用法,感興趣的可以了解一下
    2022-12-12
  • Flutter進(jìn)階之實現(xiàn)動畫效果(二)

    Flutter進(jìn)階之實現(xiàn)動畫效果(二)

    這篇文章主要為大家詳細(xì)介紹了Flutter進(jìn)階之實現(xiàn)動畫效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android利用滑動菜單框架實現(xiàn)滑動菜單效果

    Android利用滑動菜單框架實現(xiàn)滑動菜單效果

    這篇文章主要介紹了Android實現(xiàn)滑動菜單特效之滑動菜單框架完全解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • EditText監(jiān)聽方法,實時的判斷輸入多少字符

    EditText監(jiān)聽方法,實時的判斷輸入多少字符

    在EditText提供了一個方法addTextChangedListener實現(xiàn)對輸入文本的監(jiān)控。本文分享了EditText監(jiān)聽方法案例,需要的朋友一起來看下吧
    2016-12-12
  • Android編程中File文件常見存儲與讀取操作demo示例

    Android編程中File文件常見存儲與讀取操作demo示例

    這篇文章主要介紹了Android編程中File文件常見存儲與讀取操作,結(jié)合實例形式分析了Android針對文件的打開、讀寫及布局等相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • 使用ViewPager實現(xiàn)左右循環(huán)滑動及滑動跳轉(zhuǎn)

    使用ViewPager實現(xiàn)左右循環(huán)滑動及滑動跳轉(zhuǎn)

    今天實現(xiàn)了左右滑動,至于在最后一頁滑動跳轉(zhuǎn),這個也做了但是效果不是太好,也希望有實現(xiàn)的朋友能夠分享下
    2013-01-01
  • Android開發(fā)中那些需要注意的坑

    Android開發(fā)中那些需要注意的坑

    這篇文章主要介紹了Android開發(fā)過程中那些需要注意的坑,有一些是自己遇到的,特分享給大家,需要的朋友可以參考下
    2016-04-04
  • RecyclerView優(yōu)雅實現(xiàn)復(fù)雜列表布局

    RecyclerView優(yōu)雅實現(xiàn)復(fù)雜列表布局

    這篇文章主要為大家詳細(xì)介紹了RecyclerView優(yōu)雅實現(xiàn)復(fù)雜列表布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Android OpenGLES如何給相機(jī)添加濾鏡詳解

    Android OpenGLES如何給相機(jī)添加濾鏡詳解

    這篇文章主要給大家介紹了關(guān)于Android OpenGLES如何給相機(jī)添加濾鏡的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Android 軟鍵盤自動彈出與關(guān)閉實例詳解

    Android 軟鍵盤自動彈出與關(guān)閉實例詳解

    這篇文章主要介紹了Android 軟鍵盤自動彈出與關(guān)閉實例詳解的相關(guān)資料,為了用戶體驗應(yīng)該自動彈出軟鍵盤而不是讓用戶主動點擊輸入框才彈出,這里舉例說明該如何實現(xiàn),需要的朋友可以參考下
    2016-12-12

最新評論