当前位置:   article > 正文

13. 定时器组件练习

定时器组件

统计10秒之内按了多少次?

代码:

ability_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <DirectionalLayout
  3. xmlns:ohos="http://schemas.huawei.com/res/ohos"
  4. ohos:height="match_parent"
  5. ohos:width="match_parent"
  6. ohos:alignment="center"
  7. ohos:orientation="vertical">
  8. <TickTimer
  9. ohos:id="$+id:ticktimer"
  10. ohos:height="match_content"
  11. ohos:width="match_content"
  12. ohos:text_size="30fp"
  13. ohos:text_color="#FFF"
  14. ohos:background_element="#00F"
  15. ohos:layout_alignment="center"
  16. ohos:text_alignment="center"
  17. />
  18. <Text
  19. ohos:id="$+id:count"
  20. ohos:height="match_content"
  21. ohos:width="match_content"
  22. ohos:top_margin="10vp"
  23. ohos:text="0"
  24. ohos:text_size="30fp"
  25. />
  26. <Button
  27. ohos:id="$+id:but"
  28. ohos:height="match_content"
  29. ohos:width="match_content"
  30. ohos:top_margin="10vp"
  31. ohos:text_size="30fp"
  32. ohos:text="开始计时"
  33. ohos:background_element="#F00"
  34. />
  35. </DirectionalLayout>

MainAbilitySlice.java

  1. package com.example.myapplication.slice;
  2. import com.example.myapplication.ResourceTable;
  3. import ohos.aafwk.ability.AbilitySlice;
  4. import ohos.aafwk.content.Intent;
  5. import ohos.agp.components.*;
  6. import java.text.ParseException;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9. import java.util.logging.SimpleFormatter;
  10. public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener , TickTimer.TickListener {
  11. TickTimer ticktimer;
  12. Text text;
  13. Button but;
  14. @Override
  15. public void onStart(Intent intent) {
  16. super.onStart(intent);
  17. super.setUIContent(ResourceTable.Layout_ability_main);
  18. //1. 找到组件对象
  19. ticktimer = (TickTimer) findComponentById(ResourceTable.Id_ticktimer);
  20. text = (Text) findComponentById(ResourceTable.Id_count);
  21. but = (Button) findComponentById(ResourceTable.Id_but);
  22. //2. 绑定点击事件
  23. but.setClickedListener(this);
  24. //3. 给定时器一些基本设置
  25. //false:正向计时,true:反向计时
  26. ticktimer.setCountDown(false);
  27. //设置计时格式
  28. ticktimer.setFormat("mm:ss");
  29. //4. 给定时器绑定定时事件
  30. ticktimer.setTickListener(this);
  31. }
  32. @Override
  33. public void onActive() {
  34. super.onActive();
  35. }
  36. @Override
  37. public void onForeground(Intent intent) {
  38. super.onForeground(intent);
  39. }
  40. //是否第一次被点击
  41. //true:表示第一次被点击
  42. //false:表示不是第一次点击
  43. boolean first = true;
  44. //定义变量用来统计点击的次数
  45. int count = 0;
  46. //记录开始时间
  47. long startTime = 0;
  48. @Override
  49. public void onClick(Component component) {
  50. //当该方法被调用,证明按钮被点击了一次
  51. count++;
  52. //判断当前是否第一次点击
  53. if (first){
  54. //获取定时器中现在的时间 0:01
  55. //ticktimer.getText();//年 月 日 00:01
  56. startTime = String2long(ticktimer.getText());
  57. //修改按钮里的文本内容
  58. but.setText("请疯狂点我");
  59. //修改标记
  60. first = false;
  61. //开启定时器
  62. ticktimer.start();
  63. }
  64. //如果不是第一次点击
  65. //就不需要做上面的事情,直接修改文本的内容就可以了
  66. text.setText(count + "次");
  67. }
  68. //当定时器开始计时当时候,就会不断调用onTickTimerUpdate方法
  69. //tickTimer表示计时器的对象
  70. @Override
  71. public void onTickTimerUpdate(TickTimer tickTimer) {
  72. //1. 获取当时定时器的时间,并把该时间变为毫秒值
  73. long nowTime = String2long(tickTimer.getText());
  74. //2. 判断nowTime 跟 startTime之间有没有超过十秒
  75. if ((nowTime - startTime) >= 10000)
  76. {
  77. tickTimer.stop();
  78. text.setText("最终次数为" + count + "次");
  79. but.setText("计时结束");
  80. //取消按钮的点击事件
  81. but.setClickable(false);
  82. }
  83. }
  84. //把字符类型的时间改为毫秒值
  85. public long String2long(String time){
  86. SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
  87. Date date = null;
  88. try {
  89. date = sdf.parse(time);
  90. } catch (ParseException e) {
  91. e.printStackTrace();
  92. }
  93. long result = date.getTime();
  94. return result;
  95. }
  96. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/314372
推荐阅读
相关标签