Chronometer的用法也很简单,它提供了 一个android:format属性,用于指定计时器的计时格式。除此之外,Chronometer支持下面比较常用的方法:
1、setBase(long base):设置计时的起始时间;
2、setFormat(String format):设置显示的时间格式;
3、start():开始计时;
4、stop():结束计时;
5、setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定事件监听事件,当计时改变时触发改监听器;
下面是一个实例,来说明了:
main.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:gravity="center"
android:textColor="@color/colorAccent"
android:textSize="40sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="长按计时器显示菜单"
android:textColor="@color/colorAccent" />
<!-- <Button
android:id="@+id/start"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="开始计时"
android:textColor="@color/colorAccent" />-->
</LinearLayout>
在res目录下新建一个menu的文件夹,新建一个context_menu.xml的文件:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/timer_start"
android:title=" 开始计时 " />
<item
android:id="@+id/timer_stop"
android:title=" 终止计时 " />
<item
android:id="@+id/timer_reset"
android:title=" 计时器清零 " />
</menu>
MainActivity.java文件:
package com.yaowen.chronometertest;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Chronometer;
public class MainActivity extends AppCompatActivity {
private Chronometer chronometer;
// private Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获得计时器组件
chronometer = (Chronometer) findViewById(R.id.chronometer1);
//start = (Button) findViewById(R.id.start);
//长按计时器时,出现上下文菜单
this.registerForContextMenu(chronometer);
// start.setOnClickListener(this);
// chronometer.setOnChronometerTickListener(this);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (v == chronometer) {
//加载xml菜单布局文件
this.getMenuInflater().inflate(R.menu.context_menu, menu);
//设置计时器的头部图标
menu.setHeaderIcon(R.mipmap.ic_launcher);
//设置计时器标题
menu.setHeaderTitle("计时器控制菜单");
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.timer_start: {
//在开始计时之前把计时器清零
chronometer.setBase(SystemClock.elapsedRealtime());
//启动计时器
chronometer.start();
break;
}
case R.id.timer_stop: {
//停止计时器
chronometer.stop();
break;
}
case R.id.timer_reset: {
//计时器清零
chronometer.setBase(SystemClock.elapsedRealtime());
break;
}
}
return super.onContextItemSelected(item);
}
// @Override
// public void onClick(View v) {
// if (v == start) {
// //设置开始计时时间
// chronometer.setBase(SystemClock.elapsedRealtime());
// //启动计时器,开始计时
// chronometer.start();
// }
// }
//
// @Override
// public void onChronometerTick(Chronometer chronometer) {
miss++;
chronometer.setText(FormatMiss(0));
// //如果从开始计时到超过了20s
// if (SystemClock.elapsedRealtime() - chronometer.getBase() > 20 * 1000) {
// chronometer.stop();
// }
// }
}
color.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>
最后附上效果图了: