Android實戰簡易教程-第四十一槍(顯示倒計時的Button-適用於擷取驗證碼)

來源:互聯網
上載者:User

標籤:vda   nlp   dad   nba   hl7   activity   tab   決定   pmp   

近期在做擷取驗證碼的功能。考慮到優良的使用者體驗,決定製作一個擁有倒計時提示的Button按鈕,在網上查了一些資料,非常是簡單的就能實現。我寫了一個小Demo,大家能夠應用到自己的項目中。

一、代碼

1.activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <Button        android:id="@+id/btn_time"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="擷取驗證碼" /></RelativeLayout>

2.MainActivity.java:

package com.example.timebutton;import android.app.Activity;import android.os.Bundle;import android.os.CountDownTimer;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.widget.Button;public class MainActivity extends Activity {private Button mTimeButton;private TimeCount time;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);mTimeButton = (Button) findViewById(R.id.btn_time);time = new TimeCount(60000, 1000);mTimeButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {time.start();}});}/** * 繼承倒計時類 *  * @author TML *  */class TimeCount extends CountDownTimer {/** * 構造方法 *  * @param millisInFuture *            總倒計時間長度 毫秒 * @param countDownInterval *            倒計時間隔 */public TimeCount(long millisInFuture, long countDownInterval) {super(millisInFuture, countDownInterval);}@Overridepublic void onTick(long millisUntilFinished) {mTimeButton.setEnabled(false);mTimeButton.setText(millisUntilFinished / 1000 + "秒");}@Overridepublic void onFinish() {// 計時結束mTimeButton.setEnabled(true);mTimeButton.setText("又一次擷取");}}}

二、運行執行個體:





總結:CountDownTimer類的使用方法:

結構

繼承關係

public abstract class CountDownTimer extends Object

        

java.lang.Object

android.os.CountDownTimer

 

類概述

定時運行在一段時候後停止的倒計時,在倒計時運行過程中會在固定間隔時間得到通知(譯者:觸發onTick方法),以下的範例顯示在一個文字框中顯示一個30s倒計時:

 new CountdownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {

         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);

     }

     public void onFinish() {

         mTextField.setText("done!");

     }

 }.start(); 

onTick的調用是同步的,保證這次調用不會在之前調用完畢前發生。

這裡的同步機制主要是用來:onTick的實現須要非常多時間運行比倒計時間隔更重要的事情。

 

建構函式

         public CountDownTimer (long millisInFuture, long countDownInterval)

參數

                   millisInFuture  從開始調用start()到倒計時完畢並onFinish()方法被調用的毫秒數。(譯者註:倒計時時間。單位毫秒)

                   countDownInterval  接收onTick(long)回調的間隔時間。

(譯者註:單位毫秒)

 

公用方法

public final void cancel ()

         取消倒計時(譯者:取消後,再次啟動會又一次開始倒計時)        

                  

public abstract void onFinish ()

         倒計時完畢時被調用    

 

public abstract void onTick (long millisUntilFinished)

         固定間隔被調用

參數

                            millisUntilFinished   倒計時剩餘時間。

 

public synchronized final CountDownTimer start ()

         啟動倒計時



謝謝,喜歡的朋友關注我!

Android實戰簡易教程-第四十一槍(顯示倒計時的Button-適用於擷取驗證碼)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.