zoukankan      html  css  js  c++  java
  • android学习小例子——验证码倒计时按钮

    1.activity_main.xml:

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent" >
     5     <Button
     6         android:id="@+id/btn_time"
     7         android:layout_width="wrap_content"
     8         android:layout_height="wrap_content"
     9         android:text="获取验证码" />
    10 </RelativeLayout>

    2.MainActivity.java:

     1 public class MainActivity extends Activity {
     2     private Button mTimeButton;
     3     private TimeCount time;
     4     @Override
     5     protected void onCreate(Bundle savedInstanceState) {
     6         super.onCreate(savedInstanceState);
     7         requestWindowFeature(Window.FEATURE_NO_TITLE);
     8         setContentView(R.layout.activity_main);
     9         mTimeButton = (Button) findViewById(R.id.btn_time);
    10         time = new TimeCount(60000, 1000);
    11         mTimeButton.setOnClickListener(new OnClickListener() {
    12             @Override
    13             public void onClick(View v) {
    14                 time.start();
    15             }
    16         });
    17     }
    18     /**
    19      * 继承倒计时类
    20      * @author 
    21      */
    22     class TimeCount extends CountDownTimer {
    23         /**
    24          * 构造方法
    25          * @param millisInFuture
    26          *            总倒计时长 毫秒
    27          * @param countDownInterval
    28          *            倒计时间隔
    29          */
    30         public TimeCount(long millisInFuture, long countDownInterval) {
    31             super(millisInFuture, countDownInterval);
    32         }
    33         @Override
    34         public void onTick(long millisUntilFinished) {
    35             mTimeButton.setEnabled(false);
    36             mTimeButton.setText(millisUntilFinished / 1000 + "秒");//millisUntilFinished 表示当前已完成时间
    37         }
    38         @Override
    39         public void onFinish() {// 计时结束
    40             mTimeButton.setEnabled(true);
    41             mTimeButton.setText("重新获取");
    42         }
    43     }
    44 }

    这里用到了TimeCount类,初始化时传入两个参数millisInFuture和countDownInterval,millisInFuture表示从开始调用start()到倒计时完成并onFinish()方法被调用的毫秒数,即一个周期;countDownInterval表示接收onTick(long)回调的间隔时间。本实例中采用60秒周期,1秒间隔。TimeCount 继承自CountDownTimer 类,覆写了里面的onTick方法,此方法是在计数过程中执行,借用setEnabled方法,将button变成不可点击的状态,同时更新button上显示的时间。覆写的onFinish方法,在计时结束后触发,将button设置成可点击的状态,并将button上的文字变成“重新获取”。

  • 相关阅读:
    软件开发沉思录读书笔记
    卓有成效的程序员读书笔记
    结对编程收获
    《提高c++性能的编程技术》读书笔记
    第六次读书笔记
    第五周读书笔记
    美团与它的超级大脑
    第四次读书笔记
    团队-团队编程项目爬取豆瓣电影top250-模块测试过程
    团队-爬取豆瓣电影TOP250-模块开发过程
  • 原文地址:https://www.cnblogs.com/littlewriter/p/5757941.html
Copyright © 2011-2022 走看看