转载注明出处:http://blog.youkuaiyun.com/eana_don/article/details/8281347
参考资料:《疯狂Android讲义》,官网API
一、Clock时钟
1.模拟时钟AnalogClock
AnalogClock是一种模拟时钟,不会显示出秒数,但形成一个动态的时针走向,这是因为它继承了View组件,并重写了OnDraw方法。(当我们需要自定义的组件时,也可以这么做。)a.布局
<AnalogClock android:layout_width="wrap_content" android:layout_height="wrap_content" />
b.代码控制
暂无
c.运行结果
2.数字时钟DigitalClock
数字时钟集成了TextView,以文本显示的形式将时间显示出来,它可以显示出具体秒数a.布局
<DigitalClock android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14pt"/>
b.代码控制
暂无
c.运行结果
二、Chronometer计时器
计时器是一种不关心当前时间,只关心从某个时间点起,一共过去了多长时间的控件。Chronometer多数情况下需要与按钮结合使用。比如制作一个 跑步计时器,就需要一个按钮点击开始计时,再次点击后结束计时。
a.布局
<ToggleButton android:textOn="停止计时" android:textOff="开始计时,20秒后自动停止" android:id="@+id/tbtn_toggle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:checked="false"/> <Chronometer android:id="@+id/chronometer" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
b.代码控制
package cn.don.userinterface; import android.app.Activity; import android.os.Bundle; import android.os.SystemClock; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Chronometer; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.ToggleButton; import android.widget.Chronometer.OnChronometerTickListener; import android.widget.CompoundButton.OnCheckedChangeListener; public class ClockActivity extends Activity { private Chronometer chronmeter; private ToggleButton tbtn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_clock); chronmeter = (Chronometer) findViewById(R.id.chronometer); tbtn = (ToggleButton)findViewById(R.id.tbtn_toggle); //使用开关按钮开启计时或者关闭及时 tbtn.setOnCheckedChangeListener( new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(isChecked){ //设置开始计时的时间 chronmeter.setBase(SystemClock.elapsedRealtime()); //启动计时器 chronmeter.start(); } else{ chronmeter.stop(); } } } ); //响应计时器的Tick事件,可以在这里控制当计时器正在计时时要做的操作 chronmeter.setOnChronometerTickListener( new OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer chronometer) { // TODO Auto-generated method stub //设置20秒后自动停止计时器 if(SystemClock.elapsedRealtime() - chronometer.getBase() > 20 * 1000){ chronometer.stop(); //设置开关按钮恢复未开启状态 tbtn.setChecked(false); } } } ); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_clock, menu); return true; } }
c.运行结果