Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 計時器 Chronometer or handler+timer+timerTask

Android 計時器 Chronometer or handler+timer+timerTask

編輯:關於Android編程

可能我們在開發中會時常用到計時器這玩意兒,比如在錄像的時候,我們可能需要在右上角顯示一個計時器。這個東西其實實現起來非常簡單。

只需要用一個控件Chronometer,是的,就這麼簡單,我都不好意思講述一下了。

1 

是的,就這麼簡單。java代碼同樣

 1  @Override
 2     protected void onCreate(Bundle savedInstanceState) {
 3         super.onCreate(savedInstanceState);
 4         setContentView(R.layout.activity_main);
 5         timer = (Chronometer) findViewById(R.id.timer);
 6     }
 7 
 8     public void btnClick(View view) {
 9         timer.setBase(SystemClock.elapsedRealtime());//計時器清零
10         timer.start();
11     }

超簡單有木有?看看運行結果:

\

或許你會說,這個要是需要顯示上時間怎麼弄呢?不急不急,兩行代碼就能解決的事情。

 1 public void btnClick(View view) {
 2         timer.setBase(SystemClock.elapsedRealtime());//計時器清零
 3         int hour = (int) ((SystemClock.elapsedRealtime() - timer.getBase()) / 1000 / 60);
 4         timer.setFormat("0"+String.valueOf(hour)+":%s");
 5         timer.start();
 6     }
 7 
 8     public void stopClick(View view) {
 9         timer.stop();
10     }

恩,對,就是 這麼簡單,不過別忘了把xml的format改一下

1 

是的,你沒有看錯,這樣就可以了,不信,你看!

\

 

就和你想象的錄像上方的時間一樣有木有?恩。你前面設置一個圓圈,再設置計時器顏色就和它一樣有逼格了。

 

而或許你並不喜歡用這種方式,當然用handler+timer+timerTask的方式也是可以的啦。由於太簡單,就直接上代碼了。

 1 package com.example.nanchen.timerdemo;
 2 
 3 import android.os.SystemClock;
 4 import android.support.annotation.Nullable;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.os.Bundle;
 7 import android.view.View;
 8 import android.widget.Chronometer;
 9 import android.widget.TextView;
10 
11 import java.util.Locale;
12 import java.util.Timer;
13 import java.util.TimerTask;
14 
15 public class MainActivity extends AppCompatActivity {
16 
17     private Chronometer timer;
18     private Timer timer1;
19     private TextView textView;
20     private TimerTask timerTask;
21 
22 
23     @Override
24     protected void onCreate(@Nullable Bundle savedInstanceState) {
25         super.onCreate(savedInstanceState);
26         setContentView(R.layout.activity_main);
27         timer = (Chronometer) findViewById(R.id.timer);
28 
29         textView = (TextView) findViewById(R.id.text);
30         timer1 = new Timer();
31     }
32 
33     public void btnClick(View view) {
34         timer.setBase(SystemClock.elapsedRealtime());//計時器清零
35         int hour = (int) ((SystemClock.elapsedRealtime() - timer.getBase()) / 1000 / 60);
36         timer.setFormat("0"+String.valueOf(hour)+":%s");
37         timer.start();
38     }
39 
40     public void stopClick(View view) {
41         timer.stop();
42     }
43 
44     public void startClick(View view) {
45         timerTask = new TimerTask() {
46             int cnt = 0;
47             @Override
48             public void run() {
49                 runOnUiThread(new Runnable() {
50                     @Override
51                     public void run() {
52                         textView.setText(getStringTime(cnt++));
53                     }
54                 });
55             }
56         };
57         timer1.schedule(timerTask,0,1000);
58     }
59 
60     private String getStringTime(int cnt) {
61         int hour = cnt/3600;
62         int min = cnt % 3600 / 60;
63         int second = cnt % 60;
64         return String.format(Locale.CHINA,"%02d:%02d:%02d",hour,min,second);
65     }
66 
67     public void stopClick1(View view) {
68         if (!timerTask.cancel()){
69             timerTask.cancel();
70             timer1.cancel();
71         }
72     }
73 }
 1 
 2 
 9 
10     
16

簡單運行下方用timer實現的效果:

\

 

想必大家到這樣都會有了自己的理解,android 官方的Chronometer方式只是為了做一個計時器,而我們采用自己用Timer和TimerTask方式可以更加自主,因為你可以想從什麼時間開始計時就從什麼時間開始計時,計時方式想順計時倒計時都不是難事兒,甚至各種浮誇的隔兩秒,隔三秒,隔n秒都是可以的,具體使用就看你選擇咯~~

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved