需要实现一个计时器功能,包含开始、暂停、停止的功能,且开始和暂停是一个控件,至于为啥,设计就是这样的,木有办法。

首先想到的是Chronometer,那就用它吧,直接老规矩上代码,方便以后复制粘贴

页面是这样的

点开始的时候开始计时,文字变成暂停,结束不显示

点暂停的时候暂停计时,结束显示,此时点暂停继续计时页面如上行,点结束结束计时

不会传gif,就这样吧

java文件

public class MainActivity extends AppCompatActivity {boolean isPause;private Chronometer mChronometer;private TextView mTvStart;private TextView mTvEnd;private long mRecordTime;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {mChronometer = findViewById(R.id.chronometer);mTvStart = findViewById(R.id.tvStart);mTvEnd = findViewById(R.id.tvEnd);mTvStart.setOnClickListener(clickListener());mTvEnd.setOnClickListener(clickListener());}private View.OnClickListener clickListener() {return new View.OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.tvStart:if (!isPause) {if (mRecordTime != 0) {mChronometer.setBase(mChronometer.getBase() + (SystemClock.elapsedRealtime() - mRecordTime));} else {mChronometer.setBase(SystemClock.elapsedRealtime());}mChronometer.start();mTvStart.setText("暂停");mTvEnd.setVisibility(View.GONE);} else {mRecordTime = SystemClock.elapsedRealtime();mChronometer.stop();mTvStart.setText("开始");mTvEnd.setVisibility(View.VISIBLE);}isPause = !isPause;break;case R.id.tvEnd:mChronometer.stop();mChronometer.setBase(SystemClock.elapsedRealtime());mRecordTime = 0;isPause = false;break;default:break;}}};}
}

xml文件

<?xml version="1.0" encoding="utf-8"?>
<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:layout_gravity="center"android:gravity="center"android:orientation="vertical"tools:context=".MainActivity"><Chronometerandroid:id="@+id/chronometer"android:layout_width="100dp"android:layout_height="100dp"android:gravity="center_horizontal"tools:ignore="MissingConstraints" /><TextViewandroid:id="@+id/tvStart"android:layout_width="60dp"android:layout_height="30dp"android:layout_below="@+id/chronometer"android:gravity="center"android:text="开始" /><TextViewandroid:visibility="gone"android:id="@+id/tvEnd"android:layout_width="60dp"android:layout_height="30dp"android:layout_below="@+id/chronometer"android:layout_toEndOf="@+id/tvStart"android:gravity="center"android:text="结束" />
</RelativeLayout>

Chronometer实现计时器 开始、暂停、停止功能相关推荐

  1. QThread 线程暂停 停止功能的实现

    原文地址::https://www.cnblogs.com/lvdongjie/p/3757434.html 为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设置两个static型控制变量. ...

  2. java秒表计时器_Java实现的计时器【秒表】功能示例

    本文实例讲述了Java实现的计时器[秒表]功能.分享给大家供大家参考,具体如下: 应用名称:Java计时器 用到的知识:Java GUI编程 开发环境:win8+eclipse+jdk1.8 功能说明 ...

  3. java计时器_Java实现的计时器【秒表】功能示例

    本文实例讲述了Java实现的计时器[秒表]功能.分享给大家供大家参考,具体如下: 应用名称:Java计时器 用到的知识:Java GUI编程 开发环境:win8+eclipse+jdk1.8 功能说明 ...

  4. java秒表_Java实现的计时器【秒表】功能示例

    Java实现的计时器[秒表]功能示例 发布时间:2020-08-31 04:44:58 来源:脚本之家 阅读:150 作者:不能吃的坚果 本文实例讲述了Java实现的计时器[秒表]功能.分享给大家供大 ...

  5. html计时器可暂停,JS实现可暂停秒表计时器的效果(图文详解)

    JavaScript是前端开发中必不可少的一部分,很多效果的实现离不开JS,正在学习JavaScript的小伙伴,你会用JS制作秒表计时器吗?这篇文章就和大家如何用JS实现秒表计时器的效果,并且点击按 ...

  6. 设计一个以51单片机为控制器的2位的LED数码管“计时器”,实现倒计时功能。利用Keil软件编写程序,Proteus软件搭建系统仿真模型,

    设计一个以51单片机为控制器的2位的LED数码管"计时器",实现倒计时功能.利用Keil软件编写程序,Proteus软件搭建系统仿真模型,系统要求如下: 1.利用开关Switch1 ...

  7. ExoPlayer实现4G网络下暂停缓存功能

    最近接到一个需求,要求4G网络下播放器不仅要暂停而且要暂停缓存功能,研究了半天源码功力不够就问了下度娘,果然,某位前辈已经研究出解决秘方了,参考秘方,本姑娘稍加修炼遍解决了此问题,此处一个(* ̄︶ ̄) ...

  8. java秒表计时器显示_Java实现的计时器【秒表】功能示例

    摘要:这篇Java开发技术栏目下的"Java实现的计时器[秒表]功能示例",介绍的技术点是"Java.计时器.计时.功能.实现.示例",希望对大家开发技术学习和 ...

  9. 支付宝回应网商银行暂停转入功能;美国上诉法院裁决Web抓取合法;W3C发布WebAssembly 2.0初版草案|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  10. 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...

最新文章

  1. 电子白板技术_电子白板种类介绍及产品功能概述
  2. rsync 相关参数
  3. 史上最全推荐系统传统算法合集
  4. 简单的机器学习笔试题
  5. SQLite 删除表(http://www.w3cschool.cc/sqlite/sqlite-drop-table.html)
  6. Mybatis中的一级缓存
  7. client intended to send too large body
  8. php调用谷歌翻译接口_一个google翻译的php调用方式
  9. notepad怎么运行php程序,notepad怎么运行代码
  10. iis7网站可用php吗,在IIS7下面添加对PHP网页的支持
  11. 机器学习:使用梯度下降实现逻辑回归求解多元分类问题的原理
  12. 很详细的解决Tomcat乱码问题
  13. hsql mysql_HSQL简介
  14. 【AI视野·今日CV 计算机视觉论文速览 第178期】Fri, 17 Jan 2020
  15. Nacos注册中心AP架构源码(Distro)上篇
  16. 【读书笔记】心理学与生活
  17. QT教程—1.1Qt入门
  18. ROS——发布摄像头节点并编写opencv图像处理节点(python)
  19. Sublime 安装与中文配置
  20. 公羊优链蜘蛛池【高权重】(白狐 公羊seo)

热门文章

  1. MATLAB:执行程序时调用bin文件夹下的.m文件,却显示找不到该文件
  2. Oracle 官网下载地址
  3. 扩展程序 - Google Chrome
  4. C# 中 KeyPress 、KeyDown 和KeyPress的详细区别[转]
  5. MultipartFile 转换为File
  6. 微软认证考试全国各地考点名录
  7. 搭建公司内部论坛 只需简单三步 1 (安装Discuz)
  8. python爬取万方数据库,爬虫获取 js 动态数据 (万方数据库文献下载)
  9. 【科研】博士学位论文评阅书
  10. Envoy proxy 源代码解读 - original_dst cluster