Android使用CountDownTimer實現(xiàn)倒計時效果
在開發(fā)中會經(jīng)常用到倒計時這個功能,包括給手機發(fā)送驗證碼等等,之前我的做法都是使用Handler + Timer + TimerTask來實現(xiàn),現(xiàn)在發(fā)現(xiàn)了這個類,果斷拋棄之前的做法,相信還是有很多人和我一樣一開始不知道Android已經(jīng)幫我們封裝好了一個叫CountDownTimer的類。
從字面上就可以看出來它叫倒數(shù)計時器又稱定時器或計時器,采用Handler的方式實現(xiàn),將后臺線程的創(chuàng)建和Handler隊列封裝而成。
看了一下源碼,發(fā)現(xiàn)這個類的調(diào)用還蠻簡單,只有四個方法:
(1)public abstract void onTick(long millisUntilFinished);
固定間隔被調(diào)用
(2)public abstract void onFinish();
倒計時完成時被調(diào)用
(3)public synchronized final void cancel():
取消倒計時,當再次啟動會重新開始倒計時
(4)public synchronized final CountDownTimer start():
啟動倒計時
在這里可以看到前面兩個是抽象方法,需要重寫。
簡單看一下代碼:
package com.per.countdowntimer;
import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView mTvShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTvShow = (TextView) findViewById(R.id.show);
}
/**
* 取消倒計時
* @param v
*/
public void oncancel(View v) {
timer.cancel();
}
/**
* 開始倒計時
* @param v
*/
public void restart(View v) {
timer.start();
}
private CountDownTimer timer = new CountDownTimer(10000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mTvShow.setText((millisUntilFinished / 1000) + "秒后可重發(fā)");
}
@Override
public void onFinish() {
mTvShow.setEnabled(true);
mTvShow.setText("獲取驗證碼");
}
};
}
順帶附上XML布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/show" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:onClick="restart" android:text="取消" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:onClick="oncancel" android:text="結束" /> </LinearLayout>
最后說明一下:
CountDownTimer timer = new CountDownTimer(10000, 1000):以毫秒為單位,第一個參數(shù)是指從開始調(diào)用start()方法到倒計時完成的時候onFinish()方法被調(diào)用這段時間的毫秒數(shù),也就是倒計時總的時間;第二個參數(shù)表示間隔多少毫秒調(diào)用一次 onTick方法,例如間隔1000毫秒。
在調(diào)用的時候直接使用timer.start();
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android利用CountDownTimer實現(xiàn)驗證碼倒計時效果實例
- Android 列表倒計時的實現(xiàn)的示例代碼(CountDownTimer)
- Android利用CountDownTimer實現(xiàn)倒計時功能 Android實現(xiàn)停留5s跳轉(zhuǎn)到登錄頁面
- Android中CountDownTimer 實現(xiàn)倒計時功能
- Android中使用Handler及Countdowntimer實現(xiàn)包含倒計時的閃屏頁面
- Android利用CountDownTimer實現(xiàn)點擊獲取驗證碼倒計時效果
- Android CountDownTimer實現(xiàn)倒計時器
- Android基于CountDownTimer實現(xiàn)倒計時功能
- Android中CountDownTimer倒計時器用法實例
- Android使用CountDownTimer模擬短信驗證倒計時
相關文章
android 使用okhttp可能引發(fā)OOM的一個點
這篇文章主要介紹了android 使用okhttp可能引發(fā)OOM的一個點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10
解決Eclipse啟動出錯:Failed to create the Java Virtual Machine
這篇文章主要介紹了解決Eclipse啟動出錯:Failed to create the Java Virtual Machine的相關資料,這里說明出錯原因及查找錯誤和解決辦法,需要的朋友可以參考下2017-07-07
詳解Flutter網(wǎng)絡圖片本地緩存的實現(xiàn)
這篇文章主要為大家介紹了詳解Flutter網(wǎng)絡圖片本地緩存的實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Android Studio 3.5版本JNI生成SO文件詳解
這篇文章主要介紹了Android Studio 3.5版本JNI生成SO文件詳解,想了解JNI的同學,可以參考下2021-04-04

