当你想要显示时间的推移而不是进程的增加的时候,可以使用Chronometer作为一个计时器。当需要记录用户进行某项操作所消耗的时间的时候,或者在游戏中需要限制时间时候,它将非常实用。
这里,Chronometer对象的format属性可以用来设置显示时间周围的文字。并且只有它的start()在被调用之后才会显示时间及附加文字,要停止计时器可以调用stop()方法。setBase()方法用来设定设置计时器的起点,当将计时器几点设置为0的时候,计时器将从手机上次重启的时刻开始计时。
方法简介:
long getBase(); //返回基地的时间,由setBase(long)设置的,可以是SystemClock.elapsedRealtime()
String getFormat();//返回当前字符串格式,此格式是通过setFormat()实现的
void setBase(long base);//设置时间,计数定时器指定的值
void setFormat(String format);//设置显示的内容,计时器将会显示这个参数所对应的值得,如果字符串的值
为null,那么返回的值为MM:SS格式的
chronometer是一个计时器,我们可以通过其进行设置。主要的方法有
Chronometer类有3个重要的方法:start、stop和setBase,其中start方法表示开始计时;stop表示停止计时;setBase方法表示重新计时。start和stop方法没有任何参数,setBase方法有参数,表示开始计时的基准时间。如果要从当前时刻重新计时,可以将该参数值设为temClock.elapsedRealtime()。
还可以对Chronometer组件做进一步设置。在默认情况下,Chronometer组件只输出MM:SS:MM:SS的时间格式。例如,当计时到1分20秒时,Chronometer组件会显示01:20。如果变显示的信息内容,可以使用Chronometer类的setFormat方法。该方法需要一个String变并使用“%s”表示计时信息。例如,使用setFormat(“计时信息:%s”)设置显示信息,Chronometer会显示计时信息:(计时信息:10:20)。
Chronometer组件还可以通过onChronometerTick事件方法来捕捉计时动作。该方法1秒调一次。要想使用onChronometerTick事件方法,必须实现接口:android.widget.Chronometer.OnChronometerTickListener
ChronometerDemo.java
public class ChronometerDemo extends Activity {
private Chronometer mChronometer;//创建一个计时器对象
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chronometer);
mChronometer = (Chronometer) findViewById(R.id.chronometer);//将计时器对象实体化
}
/**初始化按钮Button组件*/
public void initWidget(){
// Watch for button clicks.
button = (Button) findViewById(R.id.start);
button.setOnClickListener(mStartListener);
button = (Button) findViewById(R.id.stop);
button.setOnClickListener(mStopListener);
button = (Button) findViewById(R.id.reset);
button.setOnClickListener(mResetListener);
button = (Button) findViewById(R.id.set_format);
button.setOnClickListener(mSetFormatListener);
button = (Button) findViewById(R.id.clear_format);
button.setOnClickListener(mClearFormatListener);
}
View.OnClickListener mStartListener = new OnClickListener() {
public void onClick(View v) {
mChronometer.start();//计时器开始
}
};
View.OnClickListener mStopListener = new OnClickListener() {
public void onClick(View v) {
mChronometer.stop();//计时器暂停
}
};
View.OnClickListener mResetListener = new OnClickListener() {
public void onClick(View v) {
//计时器重置为0
mChronometer.setBase(SystemClock.elapsedRealtime());
}
};
View.OnClickListener mSetFormatListener = new OnClickListener() {
public void onClick(View v) {
//改变计时器显示内容方式
mChronometer.setFormat("Formatted time (%s)");
}
};
View.OnClickListener mClearFormatListener = new OnClickListener() {
public void onClick(View v) {
//恢复原来计时器显示方式
mChronometer.setFormat(null);
}
};
}
chronometer.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:padding="4dip" android:gravity="center_horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<Chronometer android:id="@+id/chronometer"
android:format="@string/chronometer_initial_format"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0" android:paddingBottom="30dip"
android:paddingTop="30dip" />
<Button android:id="@+id/start" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/chronometer_start">
<requestFocus />
</Button>
<Button android:id="@+id/stop" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/chronometer_stop">
</Button>
<Button android:id="@+id/reset" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/chronometer_reset">
</Button>
<Button android:id="@+id/set_format" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/chronometer_set_format">
</Button>
<Button android:id="@+id/clear_format" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/chronometer_clear_format">
</Button>
</LinearLayout>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="hello">Hello World, ChronometerDemo!</string>
<string name="app_name">ChronometerDemo</string>
<string name="chronometer_start">Start</string>
<string name="chronometer_stop">Stop</string>
<string name="chronometer_reset">Reset</string>
<string name="chronometer_set_format">Set format string</string>
<string name="chronometer_clear_format">Clear format string</string>
<string name="chronometer_initial_format">Initial format: <xliff:g id="initial-format">%s</xliff:g></string>
</resources>