Android 实现计时器
效果图:
图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 实现计时器相关推荐
- 倒计时 时间校准android,android倒计时器时间
我一直在使用 android倒计时器样本来创建某个日期的倒计时. Time TimerSet = new Time(); TimerSet.set(20, 8, 2012); //day month ...
- Android Wear计时器开发
记得在2013年12月的时候,有系列文章是介绍怎么开发一个智能手表的App,让用户可以在足球比赛中记录停表时间.随着Android Wear的问世,在可穿戴设备中开发一款这样的App确实是个很不错的想 ...
- Android Studio计时器的简单使用
Android Studio计时器的简单使用 前言 一.计时操作 1.后台代码展示 2.代码解释 二.源码 总结 前言 唉 本菜鸡又要来献丑了.没办法,为了得到你们的赞,我要更努力才行.好了,开始献丑 ...
- Android实现计时器功能
使用Handler和线程来实现计时器功能 1.xml布局 在drawable中添加yuan.xml如下 <?xml version="1.0" encoding=" ...
- 时间计时android程序,Android 时间计时器控件 Chronometer
当你想要显示时间的推移而不是进程的增加的时候,可以使用Chronometer作为一个计时器.当需要记录用户进行某项操作所消耗的时间的时候,或者在游戏中需要限制时间时候,它将非常实用. 这里,Chron ...
- android实现计时器
为什么80%的码农都做不了架构师?>>> 一.应用于发送验证码的倒计时 1.使用高级控件:Chronometer 初始化,并实现ChronometerTickListener接 ...
- android——沙漏计时器
原创文章,转载注明 先看一下效果图吧 这里说一下关键的思路,所有的细节都说到太麻烦了. 1.沙漏的绘制 上下两边的绘制,用二阶贝塞尔曲线,先确定左端点,即可获得对称的右端点,上边中间控制点为(屏幕x/ ...
- android倒数计时器,Android倒计时(分钟)
本文通过CountDownTimer来实现倒计时的功能,先上效果图 效果图.gif 1.核心方法就是通过onTick方法来获取时间的改变 public void onTick(long millisU ...
- Android简单计时器
本文利用ContextMenu(上下文菜单),Chronometer实现简单计数器. Main.xml: <?xml version="1.0" encoding=" ...
- Android简单计时器详解(Timer)
Android计时器详解(Timer) 在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务.比如UI上的控件需要随着时间改变,我们可以使用Java为我们提供的计时器的工具类,即Tim ...
最新文章
- 用nodejs搭建最简单、轻量化的http server
- 《去哪网编程题》filename extension
- 人工智能如何提升大数据存储与管理效率?
- 文本标注工具——doccano
- 不用鼠标,程序员编程竟能如此高效?
- ORACLE 建库过程总结
- matlab函数isempty_MATLAB的Cell数组操作
- Linux运维基础知识——开发人员可以掌握的常识
- c语言二级编程题库,计算机二级C语言编程题库(100题)
- Latex常用功能模板集合
- html切图软件,切图工具/插件介绍
- python中labels是什么意思_使用labels属性有什么优势吗?
- python kivy教程,Python Kivy 中文教程:安装(Windows)
- C# 获取笔记本电池信息 调用 Win32 Api
- cgi进程设置多少 宝塔_比宝塔面板还要强大的Linux服务器端管理面板——AppNode...
- 高端游戏计算机外形规格,【戴尔G5游戏笔记本电脑外观展示】接口|尺寸|键盘|触摸板_摘要频道_什么值得买...
- Android 10.0热点为Enhanced Open模式时不允许WiFI和热点同时开启代码流程梳理
- 常用的PDF分割压缩软件有哪些?
- 用内网服务器对接微信公众号服务
- IDEA修改默认的新建项目路径
热门文章
- 浅谈TCP/IP网络编程中socket的行为
- 如何防止JAVA反射对单例类的攻击?
- Objective-C 协议(protocol)
- C#问题——interface class
- Using Delegates with Data Readers to Control DAL Responsibility[转]
- Linux基本命令之grep命令常见用法
- TF2.0-tf.keras.callbacks.EarlyStopping
- 统计学习方法读书笔记11-决策树课后习题
- 《统计学习方法》——朴素贝叶斯法
- C/C++中存储区域