Android使用CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)效果
在開(kāi)發(fā)中會(huì)經(jīng)常用到倒計(jì)時(shí)這個(gè)功能,包括給手機(jī)發(fā)送驗(yàn)證碼等等,之前我的做法都是使用Handler + Timer + TimerTask來(lái)實(shí)現(xiàn),現(xiàn)在發(fā)現(xiàn)了這個(gè)類,果斷拋棄之前的做法,相信還是有很多人和我一樣一開(kāi)始不知道Android已經(jīng)幫我們封裝好了一個(gè)叫CountDownTimer的類。
從字面上就可以看出來(lái)它叫倒數(shù)計(jì)時(shí)器又稱定時(shí)器或計(jì)時(shí)器,采用Handler的方式實(shí)現(xiàn),將后臺(tái)線程的創(chuàng)建和Handler隊(duì)列封裝而成。
看了一下源碼,發(fā)現(xiàn)這個(gè)類的調(diào)用還蠻簡(jiǎn)單,只有四個(gè)方法:
(1)public abstract void onTick(long millisUntilFinished);
固定間隔被調(diào)用
(2)public abstract void onFinish();
倒計(jì)時(shí)完成時(shí)被調(diào)用
(3)public synchronized final void cancel():
取消倒計(jì)時(shí),當(dāng)再次啟動(dòng)會(huì)重新開(kāi)始倒計(jì)時(shí)
(4)public synchronized final CountDownTimer start():
啟動(dòng)倒計(jì)時(shí)
在這里可以看到前面兩個(gè)是抽象方法,需要重寫。
簡(jiǎn)單看一下代碼:
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);
}
/**
* 取消倒計(jì)時(shí)
* @param v
*/
public void oncancel(View v) {
timer.cancel();
}
/**
* 開(kāi)始倒計(jì)時(shí)
* @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("獲取驗(yàn)證碼");
}
};
}
順帶附上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="結(jié)束" /> </LinearLayout>
最后說(shuō)明一下:
CountDownTimer timer = new CountDownTimer(10000, 1000):以毫秒為單位,第一個(gè)參數(shù)是指從開(kāi)始調(diào)用start()方法到倒計(jì)時(shí)完成的時(shí)候onFinish()方法被調(diào)用這段時(shí)間的毫秒數(shù),也就是倒計(jì)時(shí)總的時(shí)間;第二個(gè)參數(shù)表示間隔多少毫秒調(diào)用一次 onTick方法,例如間隔1000毫秒。
在調(diào)用的時(shí)候直接使用timer.start();
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android利用CountDownTimer實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)效果實(shí)例
- Android 列表倒計(jì)時(shí)的實(shí)現(xiàn)的示例代碼(CountDownTimer)
- Android利用CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)功能 Android實(shí)現(xiàn)停留5s跳轉(zhuǎn)到登錄頁(yè)面
- Android中CountDownTimer 實(shí)現(xiàn)倒計(jì)時(shí)功能
- Android中使用Handler及Countdowntimer實(shí)現(xiàn)包含倒計(jì)時(shí)的閃屏頁(yè)面
- Android利用CountDownTimer實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
- Android CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)器
- Android基于CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)功能
- Android中CountDownTimer倒計(jì)時(shí)器用法實(shí)例
- Android使用CountDownTimer模擬短信驗(yàn)證倒計(jì)時(shí)
相關(guān)文章
Android高仿2048小游戲?qū)崿F(xiàn)代碼
這篇文章主要介紹了Android高仿2048小游戲?qū)崿F(xiàn)代碼的相關(guān)資料,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10
Android通知欄前臺(tái)服務(wù)的實(shí)現(xiàn)
這篇文章主要介紹了Android通知欄前臺(tái)服務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
深入理解Android中Scroller的滾動(dòng)原理
今天給大家講解的是Scroller類的滾動(dòng)實(shí)現(xiàn)原理,可能很多朋友不太了解該類是用來(lái)干嘛的,但是研究Launcher的朋友應(yīng)該對(duì)他很熟悉,Scroller類是滾動(dòng)的一個(gè)封裝類,可以實(shí)現(xiàn)View的平滑滾動(dòng)效果,而我們今天就來(lái)探究一下為什么Scroller能夠?qū)崿F(xiàn)平滑滾動(dòng)。2016-08-08
Android實(shí)現(xiàn)讀取掃碼槍內(nèi)容(條形碼)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)讀取掃碼槍內(nèi)容、條形碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
ExpandableListView實(shí)現(xiàn)簡(jiǎn)單二級(jí)列表
這篇文章主要為大家詳細(xì)介紹了ExpandableListView實(shí)現(xiàn)簡(jiǎn)單二級(jí)列表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Android開(kāi)發(fā)實(shí)現(xiàn)自定義新聞加載頁(yè)面功能實(shí)例
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)自定義新聞加載頁(yè)面功能,結(jié)合具體實(shí)例形式分析了Android界面加載及頁(yè)面布局相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
Android WebView userAgent 設(shè)置為桌面UA實(shí)例
這篇文章主要介紹了Android WebView userAgent 設(shè)置為桌面UA實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Android自定義組件獲取本地圖片和相機(jī)拍照?qǐng)D片
這篇文章主要為大家詳細(xì)介紹了Android自定義組件獲取本地圖片和相機(jī)拍照?qǐng)D片的相關(guān)資料,非常炫酷的效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01

