Android_Chronometer计时器
最近做一个项目用到Handler 和Message ,开始时不是很明白,不了解其中的内部机制,所以开发起来有点难度,之后自己找了Android 时间服务 这一节的内容,总结了一点关于时间的知识,在这里大概写一下,也给更多有需要的童鞋参考参考:
1. 这里首先来的是定时器Chronometer ,这是一个组件,在可视化视图中可以直接拖拽过去,然后自己设置相关的属性,我平时直接边界XML布局文件实现,个人感觉这样思路不会混乱。定时器比较简单,没有很多复杂的方法,大家只要记住重要的3个方法:start(); stop(); setBase(); 前两个方法没有参数,是启动和停止计时器的方法,后面的是重置计时器的,可以有参数,参数是从那个时间开始计时。先来看看效果图:

步骤:
1】 布局采用线性布局,自己砌上去就行了。不多说
2】onChronometerTick事件方法是计时器每秒回调的方法,我们可以用它来更新UI,看下面的代码:
package com.android.android_chronometer;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener,
OnChronometerTickListener {
private Button btnStart, btnStop, btnReset;
private TextView textViewCurrentTime;
// 定时器,一个可以自己设定开始时间的定时器
private Chronometer chronometer;
private SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (Button) this.findViewById(R.id.buttonBegin);
btnStop = (Button) this.findViewById(R.id.buttonStop);
btnReset = (Button) this.findViewById(R.id.buttonReset);
textViewCurrentTime = (TextView) this
.findViewById(R.id.textViewCurrentTime);
chronometer = (Chronometer) this.findViewById(R.id.chronometer1);
btnStart.setOnClickListener(this);
btnStop.setOnClickListener(this);
btnReset.setOnClickListener(this);
chronometer.setOnChronometerTickListener(this);
// 设定显示的计时格式
chronometer.setFormat("计时器:%s");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.buttonBegin:
// 计时器启动
chronometer.start();
break;
case R.id.buttonStop:
// 计时器停止
chronometer.stop();
break;
default:
// 以当前时刻重新计时
chronometer.setBase(SystemClock.elapsedRealtime());
break;
}
}
/** 定时器没秒回调的方法,这样可以在UI界面上更新数据 */
@Override
public void onChronometerTick(Chronometer chronometer) {
// TODO Auto-generated method stub
textViewCurrentTime.setText("当前时间:" + formatter.format(new Date()));
}
}
3】Handler 和Message 在后面的笔记中记录。
Android_Chronometer计时器的更多相关文章
- android 两种实现计时器时分秒的实现,把时间放在你的手中~
可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...
- TCP四种计时器
TCP共使用以下四种计时器,即重传计时器.坚持计时器.保活计时器和时间等待计时器 .这几个计时器的主要特点如下: 1.重传计时器 当TCP发送报文段时,就创建该特定报文段的重传计时 ...
- C# - 计时器Timer
System.Timers.Timer 服务器计时器,允许指定在应用程序中引发事件的重复时间间隔. using System.Timers: // 在应用程序中生成定期事件 public class ...
- JavaScript学习笔记5 之 计时器 & scroll、offset、client系列属性 & 图片无缝滚动
一.计时器 setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复) setTimeout ( 函数/名称 , 毫秒数 ) 表示经过一定的毫秒后,只执行 ...
- VBA中使用计时器的两种方法
'================================ ' VBA采用Application.OnTime实现计时器 ' ' http://www.cnhup.com '========= ...
- js 短信验证码 计时器
$(function(){ getMsg(); //页面加载完成之后执行 }) function getMsg(){ //注册按钮的点击事件 $("#smsBtn").on(&qu ...
- 【效率】专为Win7系统设计的极简番茄计时器 - MiniPomodoro (附源码)
时光飞逝,一转眼坚持使用番茄工作法已经快3年了!能坚持这么长时间,主要还是得益于它的简单.但是令人纠结的是,这么长时间以来,换了7款不同的番茄计时器,仍然没有找到非常满意的: ■ 机械的噪音太大,会妨 ...
- 计时器StopWatch示例
计时器 StopWatch stwatch = new StopWatch(getClass().getSimpleName()); try{ stwatch.start(joinPoint.getS ...
- SharePoint 2013 图文开发系列之计时器任务
SharePoint的计时器任务,又称TimerJob,由服务里的Timer服务执行,在管理中心管理,是一个类似于Windows任务计划的功能,方便定时执行一些需要的功能,以免影响服务器性能. 在Sh ...
随机推荐
- 对struts2的基本知识和环境的搭建(配图解)
Struts2的优点: Struts2是由webwork2发展过来的.属于无侵入式设计.而struts1是入侵是设置. Struts2跟servlet API没有紧密的联系. struts2提供了拦截 ...
- Codeforces Codeforces Round #319 (Div. 2) C. Vasya and Petya's Game 数学
C. Vasya and Petya's Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/ ...
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
不多说了,直接看代码, NB人会懂的! package com.example.vdisktest; import android.app.Activity; import android.conte ...
- ValueStack基础:OGNL
ValueStack基础:OGNL 要了解ValueStack,必须先理解OGNL(Object Graphic Navigatino Language)! OGNL是Struts2中使用的一种表达式 ...
- 编写程序,查找并删除forward_list<int>中的奇数元素
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list ...
- Eclipse 各种包说明
2001年11月7日 ,Eclipse 1.0发布 半年之后,2002年6月27日Eclipse进入了2.0时代.2.0时代的Eclipse经历了2.0和2.1两个大的版本.其中2.0在 之后又推出了 ...
- vb.net中常用键值
可在代码中的任何地方用下列常数代替实际值: 常数 值 描述 vbKeyLButton 0x1 鼠标左键 vbKeyRButton 0x2 鼠标右键 vbKeyCancel 0x3 CANCEL 键 v ...
- python--判断数据类型可不可变
内存是一块空间,可以比喻成一个比较大的房子,定义一个变量就是在大房子中建立一个小房子,判断一个数据类型可不可变,就是看在这个这个大房子中有没有新建小房子,可以通过id来判断,如果id没有变化则是不可变 ...
- Spring任务调度
任务调度是大多数应用系统的常见需求之一,拿论坛来说:每个半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行对锁定过期的用户进行解锁.以上都是以时间为关注点的调度,事实上 ...
- Android(java)学习笔记130:ProgressBar使用的
首先我们看例程如下: 1.main.xml文件如下: <?xml version="1.0" encoding="utf-8"?> <Line ...