Chronometer作为一个计时器。当需要记录用户进行某项操作所消耗的时间的时候,或者在游戏中需要限制时间时候,可以使用它。
Chronometer类有3个重要的方法:start、stop和setBase,其中start方法表示开始计时;stop表示停止计时;setBase方法表示起始时间。start和stop方法没有任何参数,setBase方法有参数
,表示开始计时的基准时间。如果要从当前时刻重新计时,可以将该参数值设为SystemClock.elapsedRealtime()
。
还可以对Chronometer组件做进一步设置。在默认情况下,Chronometer组件只输出MM:SS的时间格式。例如,当计时到1分20秒时,Chronometer组件会显示01:20。如果变显示的信息内容,可以使用Chronometer类的setFormat方法。该方法需要一个String变量并使用“%s”表示计时信息
。例如,使用setFormat(“计时信息:%s”)
设置显示信息,Chronometer会显示:计时信息:10:20。
Chronometer组件还可以通过onChronometerTick事件方法来捕捉计时动作。该方法1秒调一次。要想使用onChronometerTick事件方法,必须通过setOnChronometerTickListener
方法实现接口:OnChronometerTickListener
,在匿名内部类里重写onChronometerTick
事件方法。
public class MainActivity extends AppCompatActivity {
Chronometer cb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//页面全屏显示
cb=findViewById(R.id.chronometer);
cb.setBase(SystemClock.elapsedRealtime());
cb.setFormat("计时器%s");
cb.start();
cb.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if(SystemClock.elapsedRealtime()-cb.getBase()>=60000){
cb.stop();
}
}
});
}
}