真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

效果如下圖所示:

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、柯坪ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的柯坪網(wǎng)站制作公司

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

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

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


 
  
  
  
  
 

下面是實現(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ù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!


標(biāo)題名稱:Android簡單封裝獲取驗證碼倒計時功能
文章出自:http://weahome.cn/article/jjpdpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部