自定义Android电子时钟控件
参照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电子时钟控件相关推荐
- Android 自定义时钟控件 时针、分针、秒针的绘制这一篇就够了
前言 对于 Android 开发者来说,自定义 View 是绕不开的一个坎.二对一自定义 View 自定义时钟必然是首选,那么我们该如何绘制自定义时钟呢?本篇我结合 github 上一个有趣的三方库, ...
- Android Studio利用时钟控件AnalogClock显示模拟时钟以及TextClock显示数字时钟
前言 利用时钟控件AnalogClock快速制作一个模拟时钟.利用TextClock显示数字时钟. 一.AnalogClock是什么? AnalogClock继承的是View,可重写OnDraw方法. ...
- C#时钟控件 (C# Clock Control)
周末实现了一个比较漂亮的时钟控件,如下图: 功能: (1)自定义样式(时钟边框颜色,小时.分钟.秒针的颜色自定义,自定义时钟内部填充色,刻度及刻度值颜色,刻度可使用矩形或圆形). (2)可作为图片水印 ...
- C 时钟控件 (C Clock Control)
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 周末实现 ...
- [发布] 多选控件和时钟控件
关键字:自定义控件(Custom Control),C++,WIN32 SDK 本文发布的是我在工作中开发的自定义控件.第一个是多选控件,该控件主要启发来自于 ExplorerBar,即资源管理器左侧 ...
- c# winform LED数字时钟控件
包含颜色选择器,日历控件(类似于Google日历),数字时钟,LED等控件 1.日历控件 calendar.rar 2.Office 2003中的颜色选择器 OfficePicker ...
- 9款精致HTML5/jQuery日历时钟控件源码下载(源码请见百度云) 链接:http://pan.baidu.com/s/1geIXe75 密码:7m4a...
现在的网页应用越来越丰富,我们在网页中填写日期和时间已经再也不用手动输入了,而是使用各种各样的日期时间选择控件,大部分样式华丽的日期选择和日历控件都是基于jQuery和HTML5的,比如今天要分享的这 ...
- Android 自定义模拟时钟控件
自定义view-透明模拟时钟显示 项目中要用到模拟时钟的显示,查了一些资料根据自己的需要进行了自定义view 思路:重写view,1.根据控件的宽高进行获取模拟时钟的半径大小.2.重写onDraw方法 ...
- Android自定义时钟控件
项目要求访问网络是等待状态要做时钟的样子,经过不懈努力,终于写出来了,现分享出来,功能比较全,直接拷贝代码就可以用,仅供有这种需求的码农们参考,如果采纳,请点个赞,谢谢支持. 效果图 主Activit ...
最新文章
- ios之UIImageView
- 按揭买的房,房产证为什么要放在银行,自己要用房产证怎么办?
- 全国计算机等级考试题库二级C操作题100套(第45套)
- Cloudera CDH 5.1版本的Hive与LDAP-2.4.44集成
- Java学习之FileInputStream与FileReader的区别
- VMware中linux虚拟机无法全屏显示的解决方法(1080P分辨率调节)
- Python 带界面的可执行程序
- 用 O(1) 时间检测整数 n 是否是 2 的幂次。
- python本科毕业论文范文_【软件工程论文】软件工程论文范文(共40篇)
- 小技巧:DELL成就5620笔记本电脑网卡驱动
- c语言乘法除法结合律,C语言运算符的优先级和结合律
- python%是什么意思_%在Python中是什么意思?
- Excel怎么插入按钮
- 有关于进程,线程and协程
- npm run dev 的时候究竟做了什么
- Python 任意进制 四进制 八进制 十六进制
- java容器都有哪些
- veket linux输入法,智能通用输入法平台(SCIM for veket)
- 互联网未来7大猜想 (欢迎指正)
- reduceByKeyAndWindow基于滑动窗口的热点搜索词实时统计(Scala版本)
热门文章
- 基于STM32+0.96寸OLED - - 7脚SPI接线显示+代码解析
- 前端开发常用PhotoShop快捷键整理(更新中)
- 如何把一张图片调整为另一张图片大小,不变形
- chrome设置标签页
- 黑喵桌面音乐播放器汉化版
- php 图片汉字命名_基于php上传图片重命名的6种解决方法的详细介绍
- 手机六大操作系统优缺点比较
- redis之瘦小精干的位图 (一)
- 【数字信号处理】线性常系数差分方程 ( 使用递推解法求解 “ 线性常系数差分方程 “ | “ 线性常系数差分方程 “ 初始条件的重要性 )
- UNIX发展史(BSD,GNU,linux)