Android基础之计时器
来源:互联网 发布:网络黄歌试听 编辑:程序博客网 时间:2024/06/05 23:42
Android提供了一个计时器组件,叫做Chronometer,该组件继承自TextView,因此都会显示一段文字。但是它显示的并不是当前时间,而是从setBase()设置的时刻所经过的时间。
他的用法也十分简单,只提供了一个android:format属性,用于指定时间的格式。除此之外,还提供了一下一些方法以供使用:
setBase(): 用于设置计时器的起始时间。setFormat(): 用于设置显示时间的格式。start(): 开始计时。stop(): 停止计时。setOnChronometerTickListener(Chronometer.OnChronometerTickLisenter listener): 用于设置计时器的监听器,当计时器时间改变时触发该监听。
下面是他的使用方法:
在XML文件中添加一个定时器Chronometer:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Chronometer android:id="@+id/chronometer1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="29dp" android:textSize="50sp" android:textColor="#ff0000"/> <Button android:id="@+id/main_btn_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="开始" /> <Button android:id="@+id/main_btn_reset" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/main_btn_start" android:layout_toRightOf="@+id/analogClock1" android:text="重新" /> <Button android:id="@+id/main_btn_stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/main_btn_reset" android:layout_marginTop="19dp" android:text="停止" /></RelativeLayout>
这里还添加了三个按钮,分别是为了开始计时,停止计时以及重新计时。
接着在java代码中对计时器进行操作:
public class MainActivity extends Activity { @ViewInject(R.id.main_btn_start) private Button btn_start; @ViewInject(R.id.main_btn_stop) private Button btn_stop; @ViewInject(R.id.main_btn_reset) private Button btn_reset; @ViewInject(R.id.chronometer1) private Chronometer chro; private long recordtime = 0;//记录计时的时间 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewUtils.inject(this); initListenter(); } private void initListenter() { btn_start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //开始计时的时间 chro.setBase(SystemClock.elapsedRealtime()-recordtime); chro.start();//开始计时 } }); btn_stop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { chro.stop();//停止计时 recordtime = SystemClock.elapsedRealtime()-chro.getBase(); } }); btn_reset.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { chro.setBase(SystemClock.elapsedRealtime()); recordtime = 0; chro.stop(); } }); }}
这里简单的用到了xUtils框架,在Activity中注入框架ViewUtils.inject(this); 并用注解@ViewInject(ID)将findViewById()省去。
实例化Chronometer和三个Button后,为三个Button添加监听器OnClickListerner并在重写的OnClick方法中处理相关的事件。
为开始按钮添加开始计时的监听:
private void initListenter() { btn_start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { chro.setBase(SystemClock.elapsedRealtime()-recordtime);//开始计时的时间 chro.start();//开始计时 } });
使用setBase()方法为计时器设置开始时间,SystemClock.elapseRealtime()方法返回的是一个long类型的数据,表示手机从开机到当前一共经过了多少毫秒,为了在点击停止计时按钮之后能从停止的时间开始计时,在后面减去了一个recordtime,recordtime记录的是停止计时的时候所显示的时间。
接着为停止按钮添加监听:
btn_stop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { chro.stop();//停止计时 recordtime = SystemClock.elapsedRealtime()-chro.getBase(); } });
当点击停止按钮时执行stop()方法,计时器停止计时,显示的时间为停止计时之前的时间。之后记录计时器计时的时间,再用手机当前的时间减去计时器开始计时的时间:SystemClock.elasedRealtime()-chro.getBase()得到一个记录了计时的时间的long类型的数据。
最后在为重新计时按钮添加监听:
btn_reset.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { chro.setBase(SystemClock.elapsedRealtime()); recordtime = 0; chro.stop(); } });
重新计时点击后,重新设置计时开始的时间,并将记录时间的recordtime变量设为0。
另外定时器显示的时间是从Base设置的时间到当前的时间,所以当setBase()=SystemClock.elapsedRealtime()-recordtime;之后,显示的就是recordtime,相当于在当前时间之前的recordtime时间就开始计时,计时到当前时间,显示的就自然是recordtime。
- Android基础之计时器
- Android基础视图组件之计时器( Chronometer )
- android之计时器chronometer
- android之计时器chronometer
- android之计时器 chronometer
- Android之计时器Chronometer
- Android基础控件Chronometer计时器控件
- Android 计时器 (正式开启 Android 之旅)
- Android之计时器(Chronometer)的用法
- Android控件开发之Chronometer计时器
- 【Android UI设计】之自定义计时器
- Android 仿Chronometer计时器之二
- 菜鸟Android之——倒计时计时器
- Android之Handler:实现计时器实例
- Unity计时器设计 - 基础计时器
- Android 计时器
- android-计时器
- android 计时器
- bzoj3174 [Tjoi2013]拯救小矮人
- 编程之美 3.9 :重建二叉树
- android studio中添加genymotion模拟器
- LeetCode : Minimum Path Sum
- 腾讯云mysql重新设置密码解决办法
- Android基础之计时器
- 161001初识C++
- IPv4地址及分类
- 自动调用系统的拨号、上网和发送Email的功能的方法
- ConcurrentHashMap源码剖析
- BZOJ 1303 [CQOI2009]中位数图
- isset()与empty()的区别
- Spring之事件监听
- Java学习笔记(学习的阶段和方式)