时钟UI组件是两个非常简单的组件,分为Digitalclock 和Analogclock,
main.xml文件,书中程序有问题,加了两个组件,一个Button和一个<Chronometer
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <!-- 定义模拟时钟 --> <AnalogClock android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 定义数字时钟 --> <DigitalClock android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14pt" /> <Button android:id="@+id/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="25dp" android:text="单击我" /> <Chronometer android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
mainactivity中
package com.example.clock; import android.os.Bundle; import android.os.SystemClock; import android.app.Activity; import android.view.View; import android.widget.Button; import android.widget.Chronometer; import android.widget.Chronometer.OnChronometerTickListener; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取计时器组件 final Chronometer ch = (Chronometer)findViewById(R.id.test); //获取开始按钮 Button start =(Button)findViewById(R.id.ok); start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View source) { //设置开始时间 ch.setBase(SystemClock.elapsedRealtime()); //启动计时器 ch.start(); } }); ch.setOnChronometerTickListener(new OnChronometerTickListener() { public void OnChronometerTick(Chronometer ch) { if(SystemClock.elapsedRealtime() - ch.getBase() > 20*1000) { ch.stop(); } } @Override public void onChronometerTick(Chronometer arg0) { // TODO Auto-generated method stub } }); } }
所以Button和Chronometer均需要在main.xml中添加。