(这不算是Materual Design中的新控件,只是第一次用到特此记录一下)
安卓提供了一个计时器组件:Chronometer,该组件extends TextView,因此都会显示一段文本,但是它显示的时间是从某个起始时间开始过去了多少时间,它只提供了android:format一个属性用于指定计时器的计数格式。
####Chronometer的用法很简单,它支持如下用法:
- getBase():返回时间。
- setBase(long base):设置计时器的起始时间。
- start():开始计时。
- stop():停止计时。
- setFormat(String format):设置显示时间的格式。
- setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定监听事件。
####示例:
一个一分钟的计时器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
<Chronometer android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/chronometer" android:textColor="#ff0303" android:textSize="12pt" android:layout_gravity="center_horizontal" android:focusable="true" />
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="启动" android:id="@+id/button" android:layout_gravity="center_horizontal" /> </LinearLayout>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public class MainActivity extends AppCompatActivity {
Chronometer ch ; Button start ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); // 获取计时器组件 ch=(Chronometer)findViewById(R.id.chronometer); // 获取开始组件 start = (Button)findViewById(R.id.button); start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //设置开始计时时间 ch.setBase(SystemClock.elapsedRealtime()-timeDifference*1000);//timeDifference真正想要显示的时间 单位秒 //启动计时器 ch.start(); } }); //为计时器绑定监听事件 ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer ch) { // 如果从开始计时到现在超过了60s if (SystemClock.elapsedRealtime() - ch.getBase() > 60 * 1000 { ch.stop(); start.setEnabled(true); } } }); } }
|
####效果图:
![image](http://upload-images.jianshu.io/upload_images/5439590-704d530542f1cd20.gif?imageMogr2/auto-orient/strip)