设想一下我们来实现一个这样的功能:里面有三个按钮(开始计时,停止计时,重置)点击开始按钮,计时组件开始计时,点击停止计时,计时停止,点击重置,计时停止,且计时组件归0,其中我们还可以增加一个时间限制按钮,如果超出了这个限制时间,则计时自动停止,效果图如下所示:

首先进行xml文件的布局

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="4"android:gravity="center"android:text="设置时间:"android:textColor="#ff0000"/><EditTextandroid:id="@+id/edt_settime"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:textColor="#ff0000"android:inputType="number" /></LinearLayout><Chronometerandroid:id="@+id/chronometer"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:textColor="#ff0000"android:textSize="60dip" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="10dip"android:orientation="horizontal" ><Buttonandroid:id="@+id/btnStart"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#ffff00"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:text="开始记时" /><Buttonandroid:id="@+id/btnStop"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#ffff00"android:layout_marginRight="10dp"android:text="停止记时" /><Buttonandroid:id="@+id/btnReset"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#ffff00"android:layout_marginRight="10dp"android:text="重置" /></LinearLayout>

然后进行Java文件的代码编写(关键代码)

package chird.example.com.chird;import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import java.util.Random;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import java.util.Random;
import java.util.Scanner;public class MainActivity_change extends AppCompatActivity {private int startTime;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_change);final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);Button btnStart = (Button) findViewById(R.id.btnStart);Button btnStop = (Button) findViewById(R.id.btnStop);Button btnRest = (Button) findViewById(R.id.btnReset);final EditText edtSetTime = (EditText) findViewById(R.id.edt_settime);btnStart.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String ss = edtSetTime.getText().toString();if (!(ss.equals(""))) {startTime = Integer.parseInt(edtSetTime.getText().toString());}// 设置开始讲时时间,毫秒为基本单位chronometer.setBase(SystemClock.elapsedRealtime());// 开始记时chronometer.start();}});btnStop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 停止chronometer.stop();}});btnRest.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {chronometer.setBase(SystemClock.elapsedRealtime());}});chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {@Overridepublic void onChronometerTick(Chronometer chronometer) {// 如果开始计时到现在超过了startime秒if (SystemClock.elapsedRealtime()- chronometer.getBase() > startTime * 1000) {chronometer.stop();// 给用户提示showDialog();}}});}private void showDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setIcon(R.drawable.jingao);builder.setTitle("警告").setMessage("时间到").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Override//这个理解已经超出了我的理解范围,待后面用处再说。public void onClick(DialogInterface dialog, int which) {}});//将对话框显示出来AlertDialog dialog = builder.create();dialog.show();}
}

最后如果超时,效果如下:

利用android实现计时组件相关推荐

  1. Android Jetpack架构组件之 Room(使用、源码篇)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...

  2. android实现箭头流程列表_反思|Android 列表分页组件Paging的设计与实现:系统概述...

    作者:却把清梅嗅 链接:https://github.com/qingmei2/blogs/issues/30 前言 本文将对Paging分页组件的设计和实现进行一个系统整体的概述,强烈建议 读者将本 ...

  3. android的应用组件,跟我学android-Android应用基本组件介绍(五)

    Activity activity 是最基本的模块,我们成为活动,一个activity通常就是一个单独的屏幕,每一个活动都被实现为一个独立的类,且都继承活动的基类.在activity的实现类里显示用户 ...

  4. Android 系统(266)---细数利用android系统机制的保活手段

    Android 进程常驻(2)----细数利用android系统机制的保活手段 这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权 ...

  5. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(1)

             在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过Content Provider组件来实现.那么,Content Provide ...

  6. android 组件大小,Android编程获取组件尺寸大小的方法

    本文实例讲述了Android编程获取组件尺寸大小的方法.分享给大家供大家参考,具体如下: 在oncreate()中利用view.getWidth()或是view.getHeiht()来获取view的宽 ...

  7. Android 的四大组件

    目录 1.Activity 2.Service与intentService 3.LocalBroadcastManager的BroadcastReceiver 4.ContentProvider Ac ...

  8. Android 之 四大组件、六大布局、五大存储

    Android 之四大组件.六大布局.五大存储:https://blog.csdn.net/shenggaofei/article/details/52450668 Android 四大组件.五大存储 ...

  9. Android 进程常驻(2)----细数利用android系统机制的保活手段

    这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程 支持系统2.3到 ...

最新文章

  1. Overlay 网络 — VxLAN 虚拟可扩展局域网协议
  2. PPT 下载 | 神策数据张涛:企业服务客户全生命周期运营三步曲总览篇
  3. python的普通方法、类方法和静态方法
  4. 技术改变生活 浅谈阿里云混合云的探索与实践
  5. 股权证明pos记账权是根据不同节点_中币(ZB)说真的,区块链第四期:关于ETH2.0,你需要了解的——PoS...
  6. 【今日CV 视觉论文速览】 13 Feb 2019
  7. python保存数据框_python – 如何将numpy数组作为对象存储在pandas数据框中?
  8. Java EE 8终于给出即将完成的迹象
  9. 原生js三种选项卡效果(滑动)
  10. Java排序算法-桶排序
  11. ansys2017安装教程_ANSYS Proucts 18.1安装激活教程
  12. otrs软件_开源 IT 服务管理软件(ITSM) - OTRS
  13. 一台计算机ip地址在哪里设置密码,电脑动态IP地址怎么设置
  14. 通达信l2行情接口怎么用?
  15. windows批量部署
  16. 自学软件测试需要多久?能掌握吗?
  17. JavaScript字符统计出现次数
  18. UE4 InputMode无法锁定编辑器视口鼠标解决方案
  19. python webpy启动服务
  20. zxing 二维码、带logo二维码生成

热门文章

  1. 走过童年时代,智能家居要长大了吗
  2. MySQL 内部执行优化策略总结
  3. 北京指标公户你不知道的那些事
  4. 怎样给pdf文件添加水印
  5. 诺基亚e7装linux,Symbian^3顶峰之作 诺基亚E7行货版评测
  6. RouterOS(ROS)定时备份配置并发送至邮箱脚本
  7. Ubuntu20.03 sudo apt update报错 E 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件
  8. 天河二号计算机是微型计算机,走近“天河二号”!世界最快的“超级计算”
  9. 光栅图形学算法--消隐算法
  10. OpenCV 3 drawing rectangle - 绘制 rectangle