安卓开发_计时器(Chronometer)的简单使用
计时器控件(Chronometer)是一个可以显示从某个起始时间开始一共过去多长时间的本文。
继承自TextView,以文本的形式显示时间内容
该组件有五个方法
1、setBase(): \\用于设置计时器的起始时间
2、setFormat():\\用于设置显示时间的格式
3、start(): \\用于指定计时开始
4、stop(): \\用于指定停止计时
5、setOnChronometerTickListener(): \\用于为计时器绑定事件监听器,当计时器改变时触发监听器
使用示例
1、先看布局文件
<?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:orientation="vertical" > <Chronometer
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="已用时间:0:00"
android:layout_gravity="center"
android:id="@+id/id_jishiqi"/> <Button
android:id="@+id/btn_jishi_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始计时" /> <Button
android:id="@+id/btn_jishi_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="暂停计时" /> <Button
android:id="@+id/btn_jishi_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="复位" /> </LinearLayout>
布局效果图:
再看JAVA文件
package base_ui; import com.example.allcode.R; import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener; public class Ui_Jishiqi extends Activity implements OnClickListener{
private Chronometer jishiqi;
private Button btn_jishi_1;
private Button btn_jishi_2;
private Button btn_jishi_3; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.base_ui_jishiqi); jishiqi = (Chronometer) findViewById(R.id.id_jishiqi);
btn_jishi_1 = (Button) findViewById(R.id.btn_jishi_1);
btn_jishi_2 = (Button) findViewById(R.id.btn_jishi_2);
btn_jishi_3 = (Button) findViewById(R.id.btn_jishi_3); jishiqi.setBase(SystemClock.elapsedRealtime()); //设置起始时间 ,这里是从0开始
jishiqi.setFormat("已用时间:%s"); btn_jishi_1.setOnClickListener(this);
btn_jishi_2.setOnClickListener(this);
btn_jishi_3.setOnClickListener(this);
//这里是计时器的监听器,可以在里面添加比如计时到多少事件提示什么文本等事件
jishiqi.setOnChronometerTickListener(new OnChronometerTickListener() { @Override
public void onChronometerTick(Chronometer chronometer) {
// TODO Auto-generated method stub }
}); }
//三个按钮的响应事件
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.btn_jishi_1:
jishiqi.start(); //开始计时
break;
case R.id.btn_jishi_2:
jishiqi.stop(); //暂停计时
break;
case R.id.btn_jishi_3:
jishiqi.setBase(SystemClock.elapsedRealtime()); //复位
break;
}
} }
代码很简单,注释很清楚
需要注意的是,当点击开始计时按钮后,计时开始,再点击暂停计时按钮,计时暂停,但是又点击开始计时的,计时器并不是从你显示的那个暂停的时间开始计时,而是
跳过了一段时间,这段时间就是你点击暂停计时按钮和第二次点击开始计时按钮中间的时间,这个时间后台是一直计算着的。
要想从你暂停计时显示的时间开始计时,可以计算一下你点击暂停计时按钮和第二次点击开始计时按钮中间的时间 减去这个时间就可以了 。
效果图:
安卓开发_计时器(Chronometer)的简单使用的更多相关文章
- 安卓开发_深入学习ViewPager控件
一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...
- 安卓开发_数据存储技术_SharedPreferences类
SharedPreferences类 供开发人员保存和获取基本数据类型的键值对. 该类主要用于基本类型,例如:booleans,ints,longs,strings.在应用程序结束后,数据仍旧会保存. ...
- 安卓开发_浅谈ListView(SimpleAdapter数组适配器)
安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...
- 安卓开发_浅谈Android动画(四)
Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1. ValueAnimator 基本属 ...
- 安卓开发_数据存储技术_sqlite
一.SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用 ...
- 安卓开发_浅谈ListView(自定义适配器)
ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ...
- 安卓开发_浅谈Fragment之ListFragment
ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...
- 安卓开发_复选按钮控件(CheckBox)的简单使用
复选按钮 即可以选择若干个选项,与单选按钮不同的是,复选按钮的图标是方块,单选按钮是圆圈 复选按钮用CheckBox表示,CheckBox是Button的子类,支持使用Button的所有属性 一.由于 ...
- 安卓开发_深入理解Content Provider
一.Content Provider概述 Content Provider用于保存和获取数据,并使其对所有应用程序可见,这是不同应用程序之间共享数据的唯一方式,因为在Android中没有提供所有应用可 ...
随机推荐
- a标签嵌套a标签在实际项目开发中遇到的坑
大家都知道HTML的嵌套规范,其中一个规范是块元素嵌套行内元素,块元素嵌套块元素,行内元素嵌套行内元素,行内元素不能嵌套块元素. 其中需要注意的是行内元素嵌套行内元素,a标签虽然是行内元素,但是a标签 ...
- 人脸检测第一文---A Dream of Spring
人脸识别研究的人很多,可是,真正具有划时代意义的还要当属Paul Viola的一篇文章<RobustReal-time Object Detection>.这篇文章让 人脸识别在实际应用中 ...
- 聊聊我面试过的一个最奇葩的 Java 程序猿!
上周我聊了聊最让我反感的 10 种程序猿,无奈一个小时就进行了删除,详细原因就不说了,容易招黑. 今天聊的我面试过的最奇葩的一个程序猿,绝对是奇葩中的奇葩,简直是程序猿中的另类,最让我反感的程序猿又添 ...
- Spring Boot - Profile配置
Profile是什么 Profile我也找不出合适的中文来定义,简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件. Profile使用 假如有开发.测试.生 ...
- Spring Boot 1.5.10 发布:修复重要安全漏洞!!!
2018/01/31,Spring Boot团队发布了Spring Boot 1.5.10. Maven: <parent> <groupId>org.springframew ...
- 今天是JVM的生日,来了解下JVM的发展历史吧
1991年4月,由James Gosling主导的团队创造了Oak语言,java的前身,1995年5月23号,Oak语言更名Java,并且提出那句注明的:”write Once,Run Anywher ...
- session失效时间设置
session失效时间设置 一.java代码 request.getSession().setMaxInactiveInterval(1800);/*秒为单位*/ 二.web.xml <sess ...
- 使用webpack将es6 es7转换成es2015
第一步:安装模块化包 cnpm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react 第二 ...
- Webservice和EJB的区别
1. WebService可以说是跨平台的,因为它采用的是XML技术,说穿了就是把你的请求按照该WebServece的标准将参数传过去,然后服务器返回结果,当然了最重要的是参数的传递和结果的返回都是采 ...
- CSS hack兼容表
IE6 IE7 IE8 Firefox Opera Safari !important Y Y Y Y Y _ Y * Y Y *+ Y \9 Y Y Y \0 Y nth-of-type(1) Y ...