AnalogClock、DigitalClock和TextClock时钟组件

在前面一期,我们学习了DatePicker和TimePicker,在实际开发中其不能完全满足我们对时间和日期的处理。

如果只是想要显示时间,而不需要用户修改,就可以使用DigitalClock和AnalogClock时钟组件,这2个组件非常有用,使用起来也非常简单,其值可以随时间自动更新。

一、AnalogClock

首先来一起学习AnalogClock组件。AnalogClock继承的是View,实际开发中可重写OnDraw方法。

AnalogClock的XML有3个属性,分别如下:

  • android:dial:模拟时钟的表背景。
  • android:hand_hour:模拟时钟的表时针。
  • android:hand_minute:模拟时钟的表分针。

可以使用系统默认的,也可以自定义图片资源。

接下来通过一个简单的示例程序来学习AnalogClock的使用。

继续使用WidgetSample工程的advancedviewsample模块,首先下载一张表盘图片放在drawable目录,然后在app/main/res/layout/目录下创建analogclock_layout.xml文件,在其中填充如下代码片段:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
    <AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:dial="@drawable/dial"
        android:layout_centerHorizontal="true"/>
</RelativeLayout>

修改MainActivity里面的代码,加载上述定义的布局文件,然后运行程序,可以看到下图所示界面效果。

二、DigitalClock

AnalogClock是一个表盘格式的模拟时钟,而DigitalClock为数字时钟。DigitalClock继承的是TextView,它本身是一个文本框。

接下来通过一个简单的示例程序来学习DigitalClock的使用。

仍然使用WidgetSample工程的advancedviewsample模块,在app/main/res/layout/目录下创建digitalclock_layout.xml文件,在其中填充如下代码片段:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
    <DigitalClock
        android:id="@+id/digitalClock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:textColor="#ff0000"
        android:textSize="30sp" />
</RelativeLayout>

修改MainActivity里面的代码,加载上述定义的布局文件,然后运行程序,可以看到下图所示界面效果。

三、TextClock

DigitalClock从API 17开始就已经过时了,建议使用新组件TextClock。TextClock的功能更加强大,它不仅能显示时间,还能显示日期;而且支持自定义格式。

TextClock提供了两种不同的格式,一种是在24进制中显示时间和日期,另一种是在12进制中显示时间和日期。

TextClock主要有以下几个XML属性:

  • android:format12Hour:设置12时制的格式
  • android:format24Hour:设置24时制的格式
  • android:timeZone:设置时区。

TextClock的主要方法有:

  • getFormat12Hour():在12进制模式中返回时间模式。
  • getFormat24Hour():在24进制模式中返回时间模式。
  • getTimeZone():返回正在使用的时区。
  • is24HourModeEnabled():检测系统当前是否使用24进制。
  • setFormat24Hour(CharSequence format):设置24时制的格式。
  • setFormat12Hour(CharSequence format):设置12时制的格式。
  • setTimeZone(String timeZone):设置时区。

接下来通过一个简单的示例程序来学习TextClock的使用。

仍然使用WidgetSample工程的advancedviewsample模块,在app/main/res/layout/目录下创建textclock_layout.xml文件,在其中填充如下代码片段:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
    <TextClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal"
        android:format24Hour="yyyy年MM月dd EE\naa HH:mm:ss"
        android:format12Hour="yyyy年MM月dd EE\naa hh:mm:ss"
        android:textStyle="normal"
        android:fontFamily="sans-serif-light"
        android:textSize="26sp"
        tools:targetApi="jelly_bean_mr1"/>
</RelativeLayout>

其中format同Java里面学习的SimpleDateFormat类一样。android:fontFamily=”sans-serif-light”用于设置安卓字体。

修改MainActivity里面的代码,加载上述定义的布局文件,然后运行程序,可以看到下图所示界面效果。

原文发布于微信公众号 - 分享达人秀(ShareExpert)

原文发表时间:2017-09-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Pythonista

Golang之Mysql事务

41620
来自专栏林德熙的博客

win10 uwp 如何创建修改保存位图 创建保存图片在 Image 控件使用WriteableBitmap 转换通过读写像素转换 CanvasBitmap

在 UWP 使用底层的图像渲染就是使用 Softwarebitmap ,这个类提供直接数据修改,可以使用这个类进行软渲染。实际上 Softwarebitmap ...

47310
来自专栏技术小讲堂

ASP.NET AJAX(3)__UpdatePanel

今天也不知道写不写的完了,最近闲下来了,却感冒了,早上起来都不会说话了,不过幸亏咱不是靠嘴皮子过活了,哎~~~~窃喜吧 上一篇简单写到UpdatePanel的一...

38650
来自专栏向治洪

微信小程序实例之摇一摇抽奖

概述 前面我们讲了如何开始微信小程序搭建和一些组件的介绍。微信小组件和微信小程序入门 微信小程序目录 为了更好的理解小程序和小程序开发,我们首先来看一下项目的目...

71260
来自专栏小狼的世界

CHROME对CSS的解析

最近完成的一个项目需要做对Chrome的支持,在这个过程中发现了一个Chrome对于Css解析与FF、IE等的区别,在这里总结一下。

11720
来自专栏Puppeteer学习

Headless Chrome:服务端渲染JS站点的一个方案【中篇】【翻译】防止重新渲染优化

25930
来自专栏不知的专栏

反-反爬虫:用几行代码写出和人类一样的动态爬虫

本文将从 Phantomjs 动态爬虫介绍起,用3行代码傻瓜式完成基于 Casper 的动态爬虫来绕过对抗策略获取页面数据。

1.4K20
来自专栏大前端_Web

前端路由相关实现

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

12020
来自专栏IT笔记

SpringMvc+Velocity的一些配置总结

前言 公司用了许久的struts2+hibernate,前两年时间SpringMvic+Shiro也有做过,大多都是基于JSP实现的界面展示层,最近一段使用使用...

38770
来自专栏前端下午茶

Vue 使用中的小技巧

在vue的使用过程中会遇到各种场景,当普通使用时觉得没什么,但是或许优化一下可以更高效更优美的进行开发。下面有一些我在日常开发的时候用到的小技巧,在下将不定期更...

30720

扫码关注云+社区

领取腾讯云代金券