利用android实现计时组件
设想一下我们来实现一个这样的功能:里面有三个按钮(开始计时,停止计时,重置)点击开始按钮,计时组件开始计时,点击停止计时,计时停止,点击重置,计时停止,且计时组件归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实现计时组件相关推荐
- Android Jetpack架构组件之 Room(使用、源码篇)
2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...
- android实现箭头流程列表_反思|Android 列表分页组件Paging的设计与实现:系统概述...
作者:却把清梅嗅 链接:https://github.com/qingmei2/blogs/issues/30 前言 本文将对Paging分页组件的设计和实现进行一个系统整体的概述,强烈建议 读者将本 ...
- android的应用组件,跟我学android-Android应用基本组件介绍(五)
Activity activity 是最基本的模块,我们成为活动,一个activity通常就是一个单独的屏幕,每一个活动都被实现为一个独立的类,且都继承活动的基类.在activity的实现类里显示用户 ...
- Android 系统(266)---细数利用android系统机制的保活手段
Android 进程常驻(2)----细数利用android系统机制的保活手段 这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权 ...
- Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(1)
在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过Content Provider组件来实现.那么,Content Provide ...
- android 组件大小,Android编程获取组件尺寸大小的方法
本文实例讲述了Android编程获取组件尺寸大小的方法.分享给大家供大家参考,具体如下: 在oncreate()中利用view.getWidth()或是view.getHeiht()来获取view的宽 ...
- Android 的四大组件
目录 1.Activity 2.Service与intentService 3.LocalBroadcastManager的BroadcastReceiver 4.ContentProvider Ac ...
- Android 之 四大组件、六大布局、五大存储
Android 之四大组件.六大布局.五大存储:https://blog.csdn.net/shenggaofei/article/details/52450668 Android 四大组件.五大存储 ...
- Android 进程常驻(2)----细数利用android系统机制的保活手段
这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程 支持系统2.3到 ...
最新文章
- Overlay 网络 — VxLAN 虚拟可扩展局域网协议
- PPT 下载 | 神策数据张涛:企业服务客户全生命周期运营三步曲总览篇
- python的普通方法、类方法和静态方法
- 技术改变生活 浅谈阿里云混合云的探索与实践
- 股权证明pos记账权是根据不同节点_中币(ZB)说真的,区块链第四期:关于ETH2.0,你需要了解的——PoS...
- 【今日CV 视觉论文速览】 13 Feb 2019
- python保存数据框_python – 如何将numpy数组作为对象存储在pandas数据框中?
- Java EE 8终于给出即将完成的迹象
- 原生js三种选项卡效果(滑动)
- Java排序算法-桶排序
- ansys2017安装教程_ANSYS Proucts 18.1安装激活教程
- otrs软件_开源 IT 服务管理软件(ITSM) - OTRS
- 一台计算机ip地址在哪里设置密码,电脑动态IP地址怎么设置
- 通达信l2行情接口怎么用?
- windows批量部署
- 自学软件测试需要多久?能掌握吗?
- JavaScript字符统计出现次数
- UE4 InputMode无法锁定编辑器视口鼠标解决方案
- python webpy启动服务
- zxing 二维码、带logo二维码生成
热门文章
- 走过童年时代,智能家居要长大了吗
- MySQL 内部执行优化策略总结
- 北京指标公户你不知道的那些事
- 怎样给pdf文件添加水印
- 诺基亚e7装linux,Symbian^3顶峰之作 诺基亚E7行货版评测
- RouterOS(ROS)定时备份配置并发送至邮箱脚本
- Ubuntu20.03 sudo apt update报错 E 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件
- 天河二号计算机是微型计算机,走近“天河二号”!世界最快的“超级计算”
- 光栅图形学算法--消隐算法
- OpenCV 3 drawing rectangle - 绘制 rectangle