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上的文字变成“重新获取”。

  • 相关阅读:
    UVa
    UVa 1630
    P3891 [GDOI2014]采集资源
    一个非常naive的小学数学魔术证明题
    P2831 [NOIP2016 提高组] 愤怒的小鸟
    P4211 [LNOI2014]LCA
    P4137 Rmq Problem / mex 强制在线做法
    P2272 [ZJOI2007]最大半连通子图
    P5664 [CSP-S2019] Emiya 家今天的饭
    盘点linux操作系统中的10条性能调优命令,一文搞懂Linux系统调优
  • 原文地址:https://www.cnblogs.com/littlewriter/p/5757941.html
Copyright © 2011-2022 走看看