最近,在做一个Android项目,需要用到一个计时器。特此,拿来和大家分享一下。
首先,看一下实现效果图。

实现思路

主要利用Handler中的postDelayed (Runnable r, long delayMillis) 函数每隔1秒钟更新一次UI。

具体实现如下。

布局文件

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.caltimer.MainActivity" ><TextView android:id="@+id/tv_timer"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:padding="20dp"android:gravity="center"android:text="00:00:00"android:textSize="50sp"/><ImageView android:id="@+id/img_start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:layout_alignParentBottom="true"android:layout_centerInParent="true"android:src="@drawable/btn_pause"/>
</RelativeLayout>
核心代码

MainActivity.java

package com.example.caltimer;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener{private TextView tv_timer;private ImageView img_start;private boolean isStopCount = false;private boolean isPause = true;private Handler mHandler = new Handler();private long timer = 0;private String timeStr = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViews();countTimer();}private void findViews() {tv_timer = (TextView) findViewById(R.id.tv_timer);img_start = (ImageView) findViewById(R.id.img_start);img_start.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.img_start:if(!isPause){isPause = true;isStopCount = false;img_start.setImageResource(R.drawable.btn_pause);} else{isPause = false;isStopCount = true;img_start.setImageResource(R.drawable.btn_start);}break;default:break;}}private Runnable TimerRunnable = new Runnable() {@Overridepublic void run() {if(!isStopCount){timer += 1000;timeStr = TimeUtil.getFormatTime(timer);tv_timer.setText(timeStr);}countTimer();}};private void countTimer(){mHandler.postDelayed(TimerRunnable, 1000);}@Overrideprotected void onDestroy() {super.onDestroy();mHandler.removeCallbacks(TimerRunnable);}}

源代码地址

Android 实现一个计时器相关推荐

  1. android简单计时器源码,Android 实现一个计时器

    [实例简介] Android实现一个计时器.功能:计时,可以暂停计时.主要利用handler的postdelay()函数. [实例截图] [核心代码] calTimer └── calTimer ├─ ...

  2. java安卓计时器_如何在android中设置计时器

    通过java.util.Timer和java.util.TimerTask使用计时器的标准Java方法在Android中运行良好,但是你应该知道这个方法创建了一个新线程. 您可以考虑使用非常方便的Ha ...

  3. android开发——分秒计时器(可 开始/暂停/继续/停止)

    最近在项目开发过程中,由于需要设计一个计时器的功能.所以在这里分享一个TimeUtils.可以实现 暂停/继续 的计时器: 话不多说,先看一下TimeUtils这个工具类: package cn.co ...

  4. android 毫秒 计时器,Android时分秒计时器的两种实现方法

    可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...

  5. 【Android】Chronometer计时器实现计时、停止、暂停、重置功能

    [Android]Button+Chronometer计时器实现计时.停止.暂停.重置功能! 一.简介 Chronometer的用法很简单,它支持如下用法: getBase():返回时间. setBa ...

  6. android实现计算器功能吗,利用Android实现一个简单的计算器功能

    利用Android实现一个简单的计算器功能 发布时间:2020-11-20 16:25:01 来源:亿速云 阅读:90 作者:Leah 今天就跟大家聊聊有关利用Android实现一个简单的计算器功能, ...

  7. Android 第一个OpenGL ES程序

    Android 第一个OpenGL ES程序 在你的Android应用中用OpenGL ES绘制图形,首先需要有一个容器,最直接的方法是实现GLSurfaceView 和  GLSurfaceView ...

  8. JavaScript编写了一个计时器

    初学JavaScript,用JavaScript编写了一个计时器. 设计思想: 1.借助于Date()对象,来不断获取时间点: 2.然后用两次时间点的毫秒数相减,算出时间差: 3.累加时间差,这样就能 ...

  9. 使用python写一个倒计时_Python 实现一个计时器

    问题 你想记录程序执行多个任务所花费的时间 解决方案 time 模块包含很多函数来执行跟时间有关的函数. 尽管如此,通常我们会在此基础之上构造一个更高级的接口来模拟一个计时器.例如: import t ...

最新文章

  1. oracle 10g数据库的异步提交
  2. Python + Selenium 基础篇 - 打开和关闭浏览器
  3. CF451E-Devu and Flowers【组合计数,容斥】
  4. 【HRBUST - 1613】迷宫问题 (bfs)
  5. win8、win10如何修改文件夹的权限
  6. php汽车找车位,自动找车位+停车?这样的车5个月后就要交付给用户了!
  7. c语言清空文件内容_C 语言清空输入缓冲区的几个手段
  8. LeetCode刷题(43)--Combinations
  9. 两条信号之间加电容_电容是什么?怎么用?怎么买?
  10. 关于三个概念:ActiveX、OLE和COM
  11. Scala学习数组/映射/元组
  12. 学习3dmax游戏建模一定要美术基础很高吗?资深建模师一语道出重点
  13. emoji android to iphone,Emoji Android to iphone
  14. 信阳市的计算机本科学校,郭华平 - 信阳师范学院 - 计算机与信息技术学院
  15. 【计算机网络】-- 动态分配信道:随机访问介质访问控制(ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议)
  16. 2022.6.20-6.26 AI行业周刊(第103期):新的小生命
  17. 智能领域的竞争不在于干了啥,而是干成啥
  18. java8新特性回顾(四)---并发增强之Striped64和longAdder
  19. H5网页链接APP浏览器跳转小程序-邪少外链
  20. Win10微软输入法取消繁体简体切换快捷键的方法

热门文章

  1. 疫苗预约系统,疫苗预约管理系统,疫苗预约小程序系统设计与实现
  2. 2022年内蒙古最新建筑八大员(标准员)模拟考试试题及答案
  3. 微信小程序7个步骤告诉你怎么投放广告位
  4. linux C/C++ 后端服务问题排查(gdb, pstack,valgrind)
  5. QML之Canvas实现标尺(刻度尺)方案
  6. 北京君正案例:超能面板PRO采用4英寸IPS超清多彩屏,值不值得买?
  7. sql server根据日期筛选出工作日的数据
  8. TypeScript实战-04-TS枚举类型
  9. 完数:求1000以内所有完数
  10. jQuery点击头像上传头像图片并预览图片