组件说明
是Text的子类,所以可以使用Text的一些属性。
常见属性:
属性名 | 功能说明 |
---|---|
format | 设置显示的格式 |
count_down | true 倒着计时 false 正着计时 |
常见方法:
方法名 | 功能说明 |
---|---|
start() | 启动计时器 |
stop() | 暂停计时器 |
setBaseTime(long base) | 设置基准时间,有bug |
setCountDown(boolean countDown) | true:倒着计时,false:顺着计时 |
setFormat(String format) | 设置显示格式。默认格式为:分钟::秒钟 |
setTickListener | 计时监听 |
基本用法
ability_main.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:alignment="center"
ohos:orientation="vertical">
<TickTimer
ohos:id="$+id:ticktimer"
ohos:height="match_content"
ohos:width="match_content"
ohos:background_element="#FF7A7ADB"
ohos:layout_alignment="center"
ohos:text_alignment="center"
ohos:text_color="#FFFFFF"
ohos:text_size="30fp"
/>
<Button
ohos:id="$+id:start"
ohos:height="match_content"
ohos:width="match_content"
ohos:text="开始"
ohos:text_size="30fp"
ohos:text_color="#FFFFFF"
ohos:background_element="#FFA0A01C"
ohos:text_alignment="center"
ohos:layout_alignment="center"
ohos:top_margin="30vp"
/>
<Button
ohos:id="$+id:end"
ohos:height="match_content"
ohos:width="match_content"
ohos:text="结束"
ohos:text_size="30fp"
ohos:text_color="#FFFFFF"
ohos:background_element="#FFA0A01C"
ohos:text_alignment="center"
ohos:layout_alignment="center"
ohos:top_margin="30vp"
/>
</DirectionalLayout>
MainAbilitySlice.java代码:
package com.example.ticktimerapplication.slice;
import com.example.ticktimerapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.TickTimer;
public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {
TickTimer ticktimer;
Button end;
Button start;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
//1.找到组件
ticktimer = (TickTimer) findComponentById(ResourceTable.Id_ticktimer);
end = (Button) findComponentById(ResourceTable.Id_end);
start = (Button) findComponentById(ResourceTable.Id_start);
//2.绑定单击事件
start.setClickedListener(this);
end.setClickedListener(this);
//3.给定时器做一些基本设置
//false:正向计时 true:反向计时
ticktimer.setCountDown(false);
//计时格式
ticktimer.setFormat("mm:ss");
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
@Override
public void onClick(Component component) {
if (component == start) {
ticktimer.start();
} else if (component == end) {
ticktimer.stop();
}
}
}
效果:
TickTimer的一些bug
1.设置基准时间,如果没有设置基准时间,是从时间原点开始的
如果设置,参数为0,从当前时间开始
如果设置,参数为3600*1000(一小时的毫秒)(非0),也是从当前时间开始计时的并且减少参数值的大小
ticktimer.setBaseTime(3600000); //有bug
建议:
- 目前不要使用setBaseTime去设置基准时间
- 计时器一旦结束之后,不要再点重新开始了,现在的计时器点击结束之后,界面上的时间会暂停,但是系统底层的计数器依旧在进行,在此点击开始之后时间会进行跳跃,这是一个bug鸿蒙官方后面应该是会进行修复的