效果图:

图1:

图2:

图3:

activity_main.xml :

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_am"android:layout_width="140dp"android:layout_height="93dp"android:text="100"android:textSize="80dp"android:textAlignment="center"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.300"/></android.support.constraint.ConstraintLayout>

MainActivity.java:

public class MainActivity extends AppCompatActivity  {private TextView textView;private int count = 100;/***      不断 接收 信号*/private Handler handler = new Handler(){public void handleMessage(Message msg){switch (msg.what){case 1:textView.setText(String.valueOf((int) msg.obj));            //修改UI组件break;default:break;}}};/***      不断 发送 信号出去*/Timer timer = new Timer();TimerTask task = new TimerTask() {@Overridepublic void run() {if (count > 0){count--;}else {destroyTimer();         //  计时完成后,销毁计时线程}Message message = new Message();    //  创建 message 对象message.what = 1;               //  将 1 存到 what 中,并将其作为 Handler 的switch开关语句的 case 启动标识message.obj = count;            //  将count存在message的obj中handler.sendMessage(message);   //  将 Message 对象发送出去}};//  销毁计时器线程private void destroyTimer() {if (timer != null){timer.cancel();timer = null;}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = findViewById(R.id.tv_am);timer.scheduleAtFixedRate(task,1000,1000);          //  启动计时器}}

点击运行即可!

注意:这里切换线程是因为,子线程是不能修改UI界面的,所以要利用Message来发送信号给Handler,Handler接收到信号以后,就会根据传过来的what,来作为case开关的标识,通过异步处理来解决问题!

Android 实现计时器相关推荐

  1. 倒计时 时间校准android,android倒计时器时间

    我一直在使用 android倒计时器样本来创建某个日期的倒计时. Time TimerSet = new Time(); TimerSet.set(20, 8, 2012); //day month ...

  2. Android Wear计时器开发

    记得在2013年12月的时候,有系列文章是介绍怎么开发一个智能手表的App,让用户可以在足球比赛中记录停表时间.随着Android Wear的问世,在可穿戴设备中开发一款这样的App确实是个很不错的想 ...

  3. Android Studio计时器的简单使用

    Android Studio计时器的简单使用 前言 一.计时操作 1.后台代码展示 2.代码解释 二.源码 总结 前言 唉 本菜鸡又要来献丑了.没办法,为了得到你们的赞,我要更努力才行.好了,开始献丑 ...

  4. Android实现计时器功能

    使用Handler和线程来实现计时器功能 1.xml布局 在drawable中添加yuan.xml如下 <?xml version="1.0" encoding=" ...

  5. 时间计时android程序,Android 时间计时器控件 Chronometer

    当你想要显示时间的推移而不是进程的增加的时候,可以使用Chronometer作为一个计时器.当需要记录用户进行某项操作所消耗的时间的时候,或者在游戏中需要限制时间时候,它将非常实用. 这里,Chron ...

  6. android实现计时器

    为什么80%的码农都做不了架构师?>>>    一.应用于发送验证码的倒计时 1.使用高级控件:Chronometer 初始化,并实现ChronometerTickListener接 ...

  7. android——沙漏计时器

    原创文章,转载注明 先看一下效果图吧 这里说一下关键的思路,所有的细节都说到太麻烦了. 1.沙漏的绘制 上下两边的绘制,用二阶贝塞尔曲线,先确定左端点,即可获得对称的右端点,上边中间控制点为(屏幕x/ ...

  8. android倒数计时器,Android倒计时(分钟)

    本文通过CountDownTimer来实现倒计时的功能,先上效果图 效果图.gif 1.核心方法就是通过onTick方法来获取时间的改变 public void onTick(long millisU ...

  9. Android简单计时器

    本文利用ContextMenu(上下文菜单),Chronometer实现简单计数器. Main.xml: <?xml version="1.0" encoding=" ...

  10. Android简单计时器详解(Timer)

    Android计时器详解(Timer) 在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务.比如UI上的控件需要随着时间改变,我们可以使用Java为我们提供的计时器的工具类,即Tim ...

最新文章

  1. 用nodejs搭建最简单、轻量化的http server
  2. 《去哪网编程题》filename extension
  3. 人工智能如何提升大数据存储与管理效率?
  4. 文本标注工具——doccano
  5. 不用鼠标,程序员编程竟能如此高效?
  6. ORACLE 建库过程总结
  7. matlab函数isempty_MATLAB的Cell数组操作
  8. Linux运维基础知识——开发人员可以掌握的常识
  9. c语言二级编程题库,计算机二级C语言编程题库(100题)
  10. Latex常用功能模板集合
  11. html切图软件,切图工具/插件介绍
  12. python中labels是什么意思_使用labels属性有什么优势吗?
  13. python kivy教程,Python Kivy 中文教程:安装(Windows)
  14. C# 获取笔记本电池信息 调用 Win32 Api
  15. cgi进程设置多少 宝塔_比宝塔面板还要强大的Linux服务器端管理面板——AppNode...
  16. 高端游戏计算机外形规格,【戴尔G5游戏笔记本电脑外观展示】接口|尺寸|键盘|触摸板_摘要频道_什么值得买...
  17. Android 10.0热点为Enhanced Open模式时不允许WiFI和热点同时开启代码流程梳理
  18. 常用的PDF分割压缩软件有哪些?
  19. 用内网服务器对接微信公众号服务
  20. IDEA修改默认的新建项目路径

热门文章

  1. 浅谈TCP/IP网络编程中socket的行为
  2. 如何防止JAVA反射对单例类的攻击?
  3. Objective-C 协议(protocol)
  4. C#问题——interface class
  5. Using Delegates with Data Readers to Control DAL Responsibility[转]
  6. Linux基本命令之grep命令常见用法
  7. TF2.0-tf.keras.callbacks.EarlyStopping
  8. 统计学习方法读书笔记11-决策树课后习题
  9. 《统计学习方法》——朴素贝叶斯法
  10. C/C++中存储区域