1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      Android簡(jiǎn)單封裝獲取驗(yàn)證碼倒計(jì)時(shí)功能

      效果如下圖所示:

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

      Android 簡(jiǎn)單封裝獲取驗(yàn)證碼倒計(jì)時(shí)功能 

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

      首頁(yè)先在 attrs.xml 中定義下所需的幾個(gè)屬性:

      
       
        
        
        
        
       
      

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

      /**
       * Created by xiaolong on 2018/1/12.
       */
      @SuppressLint("AppCompatCustomView")
      public class CountDownButton extends Button{
       //總時(shí)長(zhǎng)
       private long millisinfuture;
       //間隔時(shí)長(zhǎng)
       private long countdowninterva;
       //默認(rèn)背景顏色
       private int normalColor;
       //倒計(jì)時(shí) 背景顏色
       private int countDownColor;
       //是否結(jié)束
       private boolean isFinish;
       //定時(shí)器
       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)時(shí)長(zhǎng)
        millisinfuture = (long) typedArray.getInt(R.styleable.CountDownButton_millisinfuture,60000);
        //設(shè)置默認(rèn)間隔時(shí)長(zhǎng)
        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)倒計(jì)時(shí) 背景色
        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è)置定時(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("獲取驗(yàn)證碼");
        setBackgroundResource(normalColor);
       }
       public boolean isFinish() {
        return isFinish;
       }
       public void cancel(){
        countDownTimer.cancel();
       }
       public void start(){
        countDownTimer.start();
       }
      }

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

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

      總結(jié)

      以上所述是小編給大家介紹的Android 簡(jiǎn)單封裝獲取驗(yàn)證碼倒計(jì)時(shí)功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!


      分享名稱:Android簡(jiǎn)單封裝獲取驗(yàn)證碼倒計(jì)時(shí)功能
      分享路徑:http://www.ef60e0e.cn/article/jjpdpj.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        清河县| 屯留县| 菏泽市| 缙云县| 突泉县| 淮北市| 桑日县| 绍兴市| 京山县| 郎溪县| 乐至县| 土默特左旗| 兰州市| 任丘市| 会理县| 周口市| 太仆寺旗| 高安市| 延吉市| 浑源县| 犍为县| 隆尧县| 城固县| 岫岩| 旬邑县| 务川| 涿鹿县| 江孜县| 湘阴县| 含山县| 永清县| 门源| 前郭尔| 临汾市| 安岳县| 秀山| 临颍县| 巴楚县| 滦平县| 城口县| 钟山县|