代码

使用控件Chronometer即可实现,很简单

xml布局

先看xml布局,有两个button,一个Chronometer控件和一个提示录制状态的TextView空间

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"android:orientation="vertical"android:background="@drawable/pic4"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="300dp"android:orientation="vertical"android:gravity="center"><TextViewandroid:id="@+id/text1"android:layout_width="match_parent"android:layout_height="100dp"android:gravity="center"android:text="正在录音"android:textSize="35dp"android:textColor="#000000"android:visibility="invisible"/><Chronometerandroid:layout_width="match_parent"android:layout_height="200dp"android:format="00:00:00"android:gravity="center"android:textSize="70dp"android:id="@+id/timer"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:layout_gravity="center"><Buttonandroid:id="@+id/start"android:layout_width="120dp"android:layout_height="60dp"android:layout_gravity="center"android:text="开始"android:textStyle="bold"android:layout_marginTop="10dp"android:background="@drawable/bt_shape"android:textColor="#000000"android:onClick="start"></Button><Buttonandroid:id="@+id/stop"android:layout_width="120dp"android:layout_height="60dp"android:layout_gravity="center"android:text="停止"android:layout_marginTop="10dp"android:background="@drawable/bt_shape"android:textColor="#000000"android:textStyle="bold"android:onClick="stop"android:visibility="invisible"></Button></LinearLayout>
</LinearLayout>

java控制代码

package com.example.myaudiorecorder;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.Chronometer;
import android.view.View;
import android.os.SystemClock;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private Chronometer timer;private int state;//是否已经开始录音,0-停止,1-开始,2-暂停private Button startButtom;private Button stopButton;private TextView note;private static  long elaspedTime = 0;//继续暂停时间,方便暂停后继续计时@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);timer = (Chronometer) findViewById(R.id.timer);startButtom= (Button)findViewById(R.id.start);stopButton=(Button)findViewById(R.id.stop) ;note =(TextView)findViewById(R.id.text1);state=0;}public void start(View view){//stopButton.setEnabled(true);stopButton.setVisibility(View.VISIBLE);//设置停止按钮可见if(state==0){//开始录音state=1;startButtom.setText("暂停");timer.setBase(SystemClock.elapsedRealtime());//计时器清零int hour = (int) ((SystemClock.elapsedRealtime() - timer.getBase()) / 1000 / 3600);timer.setFormat("0"+String.valueOf(hour)+":%s");//Log.d("start:",String.valueOf(SystemClock.elapsedRealtime() - timer.getBase()));timer.start();note.setVisibility(View.VISIBLE);}else if(state==1){//点击了暂停timer.stop();//Log.d("pause:",String.valueOf(SystemClock.elapsedRealtime() - timer.getBase()));//保存暂停时间,方便后续继续开始,时间不会错elaspedTime = SystemClock.elapsedRealtime()-timer.getBase();state=2;startButtom.setText("开始");note.setText("已暂停");//提示栏}else {//暂停后重新开始//重新设置基准timer.setBase(SystemClock.elapsedRealtime()-elaspedTime);int hour = (int) ((SystemClock.elapsedRealtime() - timer.getBase()) / 1000 / 3600);timer.setFormat("0"+String.valueOf(hour)+":%s");//Log.d("restart:",String.valueOf(SystemClock.elapsedRealtime() - timer.getBase()));timer.start();state=1;startButtom.setText("暂停");note.setText("正在录音");//提示栏}}public void stop(View view){elaspedTime=0;state=0;startButtom.setText("开始");stopButton.setVisibility(View.INVISIBLE);//同时设置停止按钮不可见note.setVisibility(View.INVISIBLE);timer.setBase(SystemClock.elapsedRealtime());//计时器清零timer.setFormat("00:%s");timer.stop();}}

效果图

开始计时前只有一个开始按钮

开始计时后,弹出“停止”按钮可停止计时,同时“开始”按钮变为“暂停”按钮

android实现可暂停/继续的计时器相关推荐

  1. 安卓Android 直播点赞爱心特效,计时器

    点赞特效,上图: 首先忽略这画质和抠脚的交互效果,首先需求就是 实现类似抖音的点赞效果 飘小心心的效果,UI的方案是做成了gif图,但是这种东西做成gif太low了,于是就有了想法,这边记录一下: 首 ...

  2. Android 实现能够暂停的录音功能

    转载请注明出处:http://blog.csdn.net/yegongheng/article/details/40624267 好久没更新博客了,着实有点惭愧,以后不管工作是忙是闲都得坚持更新博客, ...

  3. Android实战第一篇——时钟+闹钟+计时器+秒表

    学习了快一学期的Android了,之前的知识点都是零散的学习的,只有当我们真正的去把他们用起来的时候才会发现难点,自己才会独立尝试去解决某个问题.接下来是我的一个简单的多功能时钟的小实战(视频资源ht ...

  4. android 全屏倒计时,全屏计时器app

    全屏计时器app是一款相当简洁的手机软件,主要作用就是可以全屏显示时间,而且软件完全没广告免费体验,相当的方便,软件十分炫酷,还有各种铃声可以选择,可以自定义,相当好用.它是专门为学生量身打造的写作业 ...

  5. android手机时钟、闹钟、计时器、秒表app源码

    简 介 此多功能闹钟界面采用TabHost框架,头部包含分别用LinearLayout水平布局显示四个标签闹钟,时钟,计时器和秒表,FrameLayout框架内部采用LinearLayout垂直布局. ...

  6. android开机动画 暂停,修改build.prop,停在开机画面。求大神

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是备份 # begin build properties # autogenerated by buildinfo.sh ro.build.id=JDQ ...

  7. android跑马灯会暂停,Android之跑马灯失焦停止问题

    要TextView 实现跑马灯效果的话,我们只需要关注5个属性即可 第一个是要单行显示 第二个是单行显示多余部分如何显示,即 ellipsize 属性的设置 第三个是获取焦点 第四个是走马灯重复次数 ...

  8. java 停止定时器_Java/Android计时器(开始,暂停,恢复,停止)

    由于要做暂停和恢复,这里我就没有使用Android的CountDownTimer,而是用了Java的Timer.所以,这个方法在java肯定是通用.我也外加了Android独有的Service,有些计 ...

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

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

最新文章

  1. SQL SERVER中ROLLUP的用法
  2. 【自动驾驶】定位方式:RTK定位与激光融合定位
  3. Python两个内置函数locals 和globals
  4. windows : Jmeter自动化测试-eclipse+maven+jmeter
  5. NumPy常用属性及方法
  6. mysql gis 时间_MySQL interval()函数
  7. 如何解决常见的 Active Directory 复制错误
  8. 如何去除微信小程序 wxParse 解析富文本图片间隙问题
  9. DM368串口通信调试
  10. 《内向性格的竞争力:发挥你的本来优势》读书笔记
  11. LeetCode 176 第二高的薪水
  12. Linux与TPM2芯片
  13. 程序员怎么写出亮眼的简历?
  14. linux开组态软件,基于嵌入式Linux的组态软件实时数据库的设计
  15. Qt编写通用主界面V2019
  16. Ubuntu zhuang SSH
  17. SpringCloud Alibaba 之Nacos集群部署-高可用保证
  18. pycharm每次新建项目都会创建虚拟环境问题,导致很多库安装后无法导入
  19. 解决 VSCode Ctrl Shift P 快捷键不可用
  20. snakerflow 多人_工作流-轻量级工作流引擎Snaker学习笔记

热门文章

  1. 音频数据格式:PCM,WAV,MIDI
  2. 物联网培训预示着我们将进入智能时代
  3. Linux操作系统应用
  4. python的allure使用
  5. 迅睿cms免费开源系统 v4.3.14
  6. java中怎么判断数组下标越界_初学java遇到疑惑,数组下标越界,求解答!
  7. 一个电子商务网站的设计及开发环境配置文档
  8. bp神经网络阈值如何确定,神经网络阈值是什么
  9. 计算机网络读书笔记(二)
  10. matlab可视化界面怎么修改,matlab可视化界面