最近做一个项目用到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 ...
随机推荐
-
SharePoint Document Library中的";Versioning Settings";功能与CSOM的对应
博客地址:http://blog.csdn.net/FoxDave SharePoint文档库关于版本的设置:"Versioning Settings",可以通过CSOM用L ...
-
HackerRank ";Flatland Space Stations";
A bit Greedy can achieve O(m) - the mid station between 2 adjacent cities has the longest distance w ...
-
C#代码实现对HTTP POST参数进行排序
private static string GetSortedParas(Dictionary<string, string> dic) { dic = dic.OrderBy(key = ...
-
saltstack之(五)数据系统Grains和Pillar
一.grains 1.什么是grainsgrains:存储minion端的信息,包括一些网络.硬件等信息,保存在minion端.一般为静态信息,非经常变化的数据. 2.grains的使用:获取mini ...
-
HDU 1300
http://acm.hdu.edu.cn/showproblem.php?pid=1300 这题大一就看到过,当时没读懂题目,今天再做就容易多了 题意:升序给出n个珍珠的的数量和价值,问买这些珍珠的 ...
-
java 1.8 动态代理源码分析
JDK8动态代理源码分析 动态代理的基本使用就不详细介绍了: 例子: class proxyed implements pro{ @Override public void text() { Syst ...
-
使用python3的typing模块提高代码健壮性
前言:很多人在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,加上Python本身就是一门弱类型的语言,这种 ...
-
(win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功
(win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 1.下载opencv 官网http://opencv.org/下载windows版Op ...
-
【tmos】spring boot项目中处理Schedule定时任务
我的代码 /** * Author:Mr.X * Date:2017/10/30 14:54 * Description: */ @Component @Configurable @EnableSch ...
-
Get与Post方法的区别
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELE ...