时钟UI组件是两个非常简单的组件,DigitalClock本身就继承了TextView——也就是说它本身就是文本框,只是它里面显示的内容总是当前时间。与TextView不同的是为DigitalClock设置android:text属性没什么作用。
AnalogClock则继承了View组件,他重写了View的OnDraw方法,它会在View上绘制模拟时钟。
表2.16显示了AnalogClock所支持的XML属性的说明。
表2.16 AnalogClock支持的XML属性的说明
XML属性 | 说明 |
android:dial | 设置该模拟时钟的表盘使用的图片 |
android:hand_hour | 设置该模拟时钟的时针表盘使用的图片 |
android:hand_minute | 设置该模拟时钟的分针使用的图片 |
DigitalClock和AnalogClock都会显示当前时间。不同的是,DigitalClock显示数字时钟,可以显示当前的秒数;AnalogClock显示模拟时钟,不会显示当前秒数。
通过下面的实例来示范AnalogClock和DigitalClock的用法。
实例:手机里的“劳力士”
由于我们可以通过图片定制AnalogClock模拟指针的表盘、时针、分针,因此只要使用合适的图片,就可以对AnalogClock进行任意定制。下面的实例将会使用“劳力士”图片来定义模拟时钟,从而开发手机里面的“劳力士”。
下面是本实例的布局文件。
<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"
android:textColor="#f0f"
android:drawableRight="@drawable/ic_launcher"/>
<!-- 定义模拟时钟,并使用自定义表盘,时针图片 -->
<AnalogClock android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:dial="@drawable/watch"
android:hand_minute="@drawable/hand" />
</LinearLayout>
使用Activity显示上面的界面布局,将会看到2.27所示的界面。
正如从上面的粗体字代码中看到的,如果想控制模拟时钟显示时间的字号大小、字体颜色等,都可通过android:textSize、android:textColor等属性进行控制——因为DigitalClock本质上还是一个TextView,所以它可以使用TextView的XML属性和方法。
数字时钟与模拟时钟