HarmonyOS實戰——TickTimer定時器元件基本使用
【鴻蒙專欄,從入門到實戰系列】:
https://blog.csdn.net/qq_41684621/category_10128500.html
目錄
1. TickTimer定時器元件說明:
2. 實作案例——計時器
3. TickTimer元件——bug彙總:
4. TickTimer定時器案例——統計10秒内按鈕點選的次數
是Text的子類,是以可以使用Text的一些屬性
該元件目前有一些bug,後續版本中會修複這些bug的
常見屬性:
屬性名
功能說明
format
設定顯示的格式
count_down
true倒着計時,false正着計時
常見方法:

基本用法:
xml檔案:
<code>mm:ss</code> 分别表示分鐘和秒鐘
統計一段時間之類做了多少事情,這個時候就需要計時器了
在定時器下面分别添加開始和結束計時的兩個按鈕
建立項目:<code>TickTimerApplication</code>
ability_main
<code>ohos:text_alignment="center"</code>:表示的是文本相對于元件是居中的
<code>ohos:layout_alignment="center"</code>:表示的是<code>TickTimer</code>元件在布局裡面是居中的
MainAbilitySlice
運作:
點選“開始”按鈕
點選“結束”按鈕後就停止計時了
不要用 <code>setBaseTimer</code> 去設定基準時間
停止之後不用重新開始
如果沒有設定基準時間,把時間格式設定如下,就會看到是從什麼時候開始計時的了
運作,發現是從時間原點開始
是以,如果沒有設定基準時間,預設是從時間原點開始計時的
如果設定了基準時間,參數為 0
點選“開始”按鈕後,瞬間變成了目前的時間開始計時
是以,如果設定了基準時間,參數為 0,是從目前時間開始計時的
如果設定了基準時間,參數為非 0 ,具體數值:<code>3600*1000</code>(表示一小時的毫秒值)
運作,點選“開始”按鈕後,并沒有對目前時間做一個增加,反而對目前時間做一個減少
是以,如果設定了基準時間,參數為非 0,也是從目前時間開始計時的,并且還會減少對應增加的時間,說明有 bug
總結:
如果沒有設定基準時間,預設是從時間原點開始計時的
如果設定基準時間,參數為0,是從目前時間開始計時的
如果設定基準時間,參數為非0,也是從目前時間開始計時的
是以,<code>tickTimer.setBaseTime();</code> 這個方法是有 <code>bug</code> 的,暫時不要用這個方法,相信以後HarmonyOS在更新的時候會修複這個 bug
還有一個 bug,把時間格式設定為分秒計時
運作後,它不是從 <code>0</code> 秒開始計時的,而是從運作開始項目後就開始了,當你點選“開始”按鈕後,就會發現已經開始計時了,按下結束再開始,也不是從剛剛暫停的時間再開始計時的,而是一直往後面計時
雖然點選了結束,在這個APP界面當中時間不再跳動,但是在系統的底層,時間并沒有停止
建議:
該元件目前還是有 bug 的
計時器一旦點選結束之後,就不要重新開始再計時了,也就是說每個計時器隻用一次就行了
使用定時器統計10秒之内按了多少次?
需求:
最上面是<code>TickTimer</code>定時器,中間的是文本顯示次數,下面是“開始計時”按鈕,當點選了這個按鈕之後,按鈕上面的文字就會變成“請瘋狂點我”,然後就不斷的點選這個按鈕,點選一次,上面顯示的文本就會增加一次計數,此時,定時器也會不斷走動的狀态,當到達<code>10</code>秒鐘之後,“請瘋狂點我”按鈕裡面的文字就會顯示“遊戲結束了”,中間的按鈕就會展示我在 <code>10</code>秒之内一共點選了多少按鈕次數
建立項目:<code>TickTimerPracticeApplication</code>
定時器的格式:<code>00:01</code> ,可以用 <code>ticktimer.setText();</code> 擷取到定時器現在的時間,不過現在是字元串的表示,如:“<code>00:01</code>”,是以還需要把它變為毫秒值
添加一個方法進行轉換
本文來自部落格園,作者:兮動人,轉載請注明原文連結:https://www.cnblogs.com/xdr630/p/15271906.html