android实现可暂停/继续的计时器
代码
使用控件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实现可暂停/继续的计时器相关推荐
- 安卓Android 直播点赞爱心特效,计时器
点赞特效,上图: 首先忽略这画质和抠脚的交互效果,首先需求就是 实现类似抖音的点赞效果 飘小心心的效果,UI的方案是做成了gif图,但是这种东西做成gif太low了,于是就有了想法,这边记录一下: 首 ...
- Android 实现能够暂停的录音功能
转载请注明出处:http://blog.csdn.net/yegongheng/article/details/40624267 好久没更新博客了,着实有点惭愧,以后不管工作是忙是闲都得坚持更新博客, ...
- Android实战第一篇——时钟+闹钟+计时器+秒表
学习了快一学期的Android了,之前的知识点都是零散的学习的,只有当我们真正的去把他们用起来的时候才会发现难点,自己才会独立尝试去解决某个问题.接下来是我的一个简单的多功能时钟的小实战(视频资源ht ...
- android 全屏倒计时,全屏计时器app
全屏计时器app是一款相当简洁的手机软件,主要作用就是可以全屏显示时间,而且软件完全没广告免费体验,相当的方便,软件十分炫酷,还有各种铃声可以选择,可以自定义,相当好用.它是专门为学生量身打造的写作业 ...
- android手机时钟、闹钟、计时器、秒表app源码
简 介 此多功能闹钟界面采用TabHost框架,头部包含分别用LinearLayout水平布局显示四个标签闹钟,时钟,计时器和秒表,FrameLayout框架内部采用LinearLayout垂直布局. ...
- android开机动画 暂停,修改build.prop,停在开机画面。求大神
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是备份 # begin build properties # autogenerated by buildinfo.sh ro.build.id=JDQ ...
- android跑马灯会暂停,Android之跑马灯失焦停止问题
要TextView 实现跑马灯效果的话,我们只需要关注5个属性即可 第一个是要单行显示 第二个是单行显示多余部分如何显示,即 ellipsize 属性的设置 第三个是获取焦点 第四个是走马灯重复次数 ...
- java 停止定时器_Java/Android计时器(开始,暂停,恢复,停止)
由于要做暂停和恢复,这里我就没有使用Android的CountDownTimer,而是用了Java的Timer.所以,这个方法在java肯定是通用.我也外加了Android独有的Service,有些计 ...
- android开发——分秒计时器(可 开始/暂停/继续/停止)
最近在项目开发过程中,由于需要设计一个计时器的功能.所以在这里分享一个TimeUtils.可以实现 暂停/继续 的计时器: 话不多说,先看一下TimeUtils这个工具类: package cn.co ...
最新文章
- Mysql 递归获取多重数组数据
- PG数据向Kingbase移植
- nagios全攻略(一)----准备阶段
- HDU - 2255 奔小康赚大钱(二分图最大权匹配+KM)
- (19)HTML5 <progress> 标签
- mysql视图应用_MySQL视图的概念与实际应用
- Eclipse用法和技巧十六:自动添加未实现方法2
- android word文件编辑器,AndroDOC Doc&Word的编辑器
- 【论文阅读】Generalization in Reinforcement Learning
- 关于word-break和word-wrap的使用和区别
- 深度学习项目部署遇到的错误【记录】
- 常看的几个网站:推荐给大家
- STOP 0X00000018关机蓝屏重启问题
- AMiner背后的技术细节与挑战
- 3199. 命令行选项
- python抓取小红书_小红书很难爬?最新爬取方法教给你啦~
- 网络面试题:字节序?网络字节序和主机字节序?
- C语言#define的用法,C语言宏定义
- VSS、VDD、VCC区别
- imx6ull项目也是封装成脚本安装 Poky 交叉编译工具链类似ATK-STM32MP157交叉编译
热门文章
- css3圣诞节喜庆文字祝福代码
- TOF,双目,结构光,激光雷达等传感器及相关技术
- JavaScript基础知识总结复习(一)
- 推荐几个2023年比较好用的youtube转换器
- 回归测试概念和4种回归测试策略——你想知道的都在这里啦!
- 高三c语言程序设计计划,《C语言程序设计》教学计划.doc
- 组合投资分配的方法——【七二一】原则
- 从 DP 到 DDP 到 apex
- 【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)...
- 攻防世界 web高手进阶区 10分题 weiphp