今天给大家介绍一个Android中不常用的控件,Chronometer,简单的说就是计时器,下面看看如何使用,先上效果图:
Chronometer是Android系统自带的一个控件,继承自TextView,
我们先看看布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:orientation="vertical"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_above="@+id/chm"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置时间:"
/>
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<Chronometer
android:id="@+id/chm"
android:layout_width="wrap_content"
android:textColor="#ff0000"
android:textSize="30sp"
android:layout_centerInParent="true"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_below="@+id/chm"
android:layout_width="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:layout_height="wrap_content">
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:text="开始计时"
android:onClick="click"
android:layout_height="wrap_content" />
<Button
android:id="@+id/stop"
android:layout_width="wrap_content"
android:text="停止计时"
android:onClick="click"
android:layout_height="wrap_content" />
<Button
android:id="@+id/reset"
android:layout_width="wrap_content"
android:text="重置"
android:onClick="click"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
我们先来看看Chronometer的一些常用方法:
setBase():设置计时器的起始参考时间
start():开始计时
stop():停止计时
setOnChronometerTickListener():设置计时器时间改变监听
下面给出例子的代码:
public class MainActivity extends Activity {
private Chronometer chronometer;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.edittext);
chronometer = (Chronometer) findViewById(R.id.chm);
}
public void click(View view){
switch (view.getId()){
case R.id.start:
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.start();
break;
case R.id.stop:
chronometer.stop();
break;
case R.id.reset:
chronometer.setBase(SystemClock.elapsedRealtime());
break;
}
if(!TextUtils.isEmpty(editText.getText().toString())) {
final int time = Integer.parseInt(editText.getText().toString());
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if (SystemClock.elapsedRealtime() - chronometer.getBase() >time*1000) {
Toast.makeText(MainActivity.this, "时间到", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}