参照Google的闹钟源码,提取出来其中的一个部分,获取系统的当前时间,并实时进行更新显示,写成一个控件view,以后有需要的话可以放在自己的App中,当做一个通用的控件来使用。本例子中只是简单的把源代码中的相关内容和逻辑提取了出来,并没有做美化的工作,但思路就是这样的,按个人喜欢去修改就可以了。该控件显示有两种状态,一个是24小时制的时候会显示形如“15:30”的风格,12小时制的时候会显示“8:00上午”的风格,根据自己系统的设定而识别,下面的是显示后的两张截图,图中的时间显示区域就是主要实现的控件了。

图中上下午的显示是根据你的系统的语言而定的,图中是中文显示“上午”,若英文则显示“AM”

                                                                      

这个名为DigitalClock的控件继承自LinearLayout,并在其中做了相关的更改与控制,主要的代码块有如下:

注册了一个广播,当检测到系统的时区内容发生变化时,更新下时间以便正确的显示

/** 时区发生变化的广播接收者 */
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)) {
mCalendar = Calendar.getInstance();
}
updateTime();
}
};

写一个观察者类,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理

/** 当时间改变时的观察者类 */
private class FormatChangeObserver extends ContentObserver {
public FormatChangeObserver() {
super(new Handler());
}
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
setDateFormat();
updateTime();
}
}

同时还要在onAttachedToWindow()和onDetachedFromWindow()方法中对观察者进行注册和取消注册

@Override
protected void onAttachedToWindow() {
// TODO Auto-generated method stub
super.onAttachedToWindow();
if (mAttached)
return;
mAttached = true;
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_TIME_CHANGED);
filter.addAction(Intent.ACTION_TIME_TICK);
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
getContext().registerReceiver(receiver, filter);
mFormatChangeObserver = new FormatChangeObserver();
getContext().getContentResolver().registerContentObserver(
Settings.System.CONTENT_URI, true, mFormatChangeObserver);
updateTime();
}
@Override
protected void onDetachedFromWindow() {
// TODO Auto-generated method stub
super.onDetachedFromWindow();
if (!mAttached)
return;
mAttached = false;
getContext().unregisterReceiver(receiver);
getContext().getContentResolver().unregisterContentObserver(
mFormatChangeObserver);
}

这个小控件只是安卓闹钟的电子钟部分,要想实现闹钟还要有好多东西实现,尝试去仿照源码写个小闹钟,不过单独的这个控件也是蛮有用的。

自定义Android电子时钟控件相关推荐

  1. Android 自定义时钟控件 时针、分针、秒针的绘制这一篇就够了

    前言 对于 Android 开发者来说,自定义 View 是绕不开的一个坎.二对一自定义 View 自定义时钟必然是首选,那么我们该如何绘制自定义时钟呢?本篇我结合 github 上一个有趣的三方库, ...

  2. Android Studio利用时钟控件AnalogClock显示模拟时钟以及TextClock显示数字时钟

    前言 利用时钟控件AnalogClock快速制作一个模拟时钟.利用TextClock显示数字时钟. 一.AnalogClock是什么? AnalogClock继承的是View,可重写OnDraw方法. ...

  3. C#时钟控件 (C# Clock Control)

    周末实现了一个比较漂亮的时钟控件,如下图: 功能: (1)自定义样式(时钟边框颜色,小时.分钟.秒针的颜色自定义,自定义时钟内部填充色,刻度及刻度值颜色,刻度可使用矩形或圆形). (2)可作为图片水印 ...

  4. C 时钟控件 (C Clock Control)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 周末实现 ...

  5. [发布] 多选控件和时钟控件

    关键字:自定义控件(Custom Control),C++,WIN32 SDK 本文发布的是我在工作中开发的自定义控件.第一个是多选控件,该控件主要启发来自于 ExplorerBar,即资源管理器左侧 ...

  6. c# winform LED数字时钟控件

    包含颜色选择器,日历控件(类似于Google日历),数字时钟,LED等控件 1.日历控件       calendar.rar 2.Office 2003中的颜色选择器    OfficePicker ...

  7. 9款精致HTML5/jQuery日历时钟控件源码下载(源码请见百度云) 链接:http://pan.baidu.com/s/1geIXe75 密码:7m4a...

    现在的网页应用越来越丰富,我们在网页中填写日期和时间已经再也不用手动输入了,而是使用各种各样的日期时间选择控件,大部分样式华丽的日期选择和日历控件都是基于jQuery和HTML5的,比如今天要分享的这 ...

  8. Android 自定义模拟时钟控件

    自定义view-透明模拟时钟显示 项目中要用到模拟时钟的显示,查了一些资料根据自己的需要进行了自定义view 思路:重写view,1.根据控件的宽高进行获取模拟时钟的半径大小.2.重写onDraw方法 ...

  9. Android自定义时钟控件

    项目要求访问网络是等待状态要做时钟的样子,经过不懈努力,终于写出来了,现分享出来,功能比较全,直接拷贝代码就可以用,仅供有这种需求的码农们参考,如果采纳,请点个赞,谢谢支持. 效果图 主Activit ...

最新文章

  1. ios之UIImageView
  2. 按揭买的房,房产证为什么要放在银行,自己要用房产证怎么办?
  3. 全国计算机等级考试题库二级C操作题100套(第45套)
  4. Cloudera CDH 5.1版本的Hive与LDAP-2.4.44集成
  5. Java学习之FileInputStream与FileReader的区别
  6. VMware中linux虚拟机无法全屏显示的解决方法(1080P分辨率调节)
  7. Python 带界面的可执行程序
  8. 用 O(1) 时间检测整数 n 是否是 2 的幂次。
  9. python本科毕业论文范文_【软件工程论文】软件工程论文范文(共40篇)
  10. 小技巧:DELL成就5620笔记本电脑网卡驱动
  11. c语言乘法除法结合律,C语言运算符的优先级和结合律
  12. python%是什么意思_%在Python中是什么意思?
  13. Excel怎么插入按钮
  14. 有关于进程,线程and协程
  15. npm run dev 的时候究竟做了什么
  16. Python 任意进制 四进制 八进制 十六进制
  17. java容器都有哪些
  18. veket linux输入法,智能通用输入法平台(SCIM for veket)
  19. 互联网未来7大猜想 (欢迎指正)
  20. reduceByKeyAndWindow基于滑动窗口的热点搜索词实时统计(Scala版本)

热门文章

  1. 基于STM32+0.96寸OLED - - 7脚SPI接线显示+代码解析
  2. 前端开发常用PhotoShop快捷键整理(更新中)
  3. 如何把一张图片调整为另一张图片大小,不变形
  4. chrome设置标签页
  5. 黑喵桌面音乐播放器汉化版
  6. php 图片汉字命名_基于php上传图片重命名的6种解决方法的详细介绍
  7. 手机六大操作系统优缺点比较
  8. redis之瘦小精干的位图 (一)
  9. 【数字信号处理】线性常系数差分方程 ( 使用递推解法求解 “ 线性常系数差分方程 “ | “ 线性常系数差分方程 “ 初始条件的重要性 )
  10. UNIX发展史(BSD,GNU,linux)