DigitalClock类:
package com.ex.view;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.SystemClock;
import android.provider.Settings;
import android.text.format.DateFormat;
import android.util.AttributeSet;
public class DigitalClock extends android.widget.DigitalClock{
Calendar mCalendar;
private final static String mFormat = "EEEE,MMMM-dd-yyyy hh:mm aa";//h:mm:ss aa
private FormatChangeObserver mFormatChangeObserver;
private Runnable mTicker;
private Handler mHandler;
private boolean mTickerStopped = false;
public DigitalClock(Context context) {
super(context);
initClock(context);
}
public DigitalClock(Context context, AttributeSet attrs) {
super(context, attrs);
initClock(context);
}
private void initClock(Context context){
Resources r = context.getResources();
if(mCalendar == null){
mCalendar = Calendar.getInstance();
}
mFormatChangeObserver = new FormatChangeObserver();
getContext().getContentResolver().registerContentObserver(Settings.System.CONTENT_URI, true, mFormatChangeObserver);
}
@Override
protected void onAttachedToWindow() {
mTickerStopped = false;
super.onAttachedToWindow();
mHandler = new Handler();
mTicker = new Runnable(){
@Override
public void run() {
if(mTickerStopped){
return ;
}
mCalendar.setTimeInMillis(System.currentTimeMillis());
setText(DateFormat.format(mFormat, mCalendar));
invalidate();
long now = SystemClock.uptimeMillis();
long next = now + (1000 - now % 1000);
mHandler.postAtTime(mTicker, next);
}
};
mTicker.run();
}
private class FormatChangeObserver extends ContentObserver{
public FormatChangeObserver() {
super(new Handler());
}
@Override
public void onChange(boolean selfChange) {
}
}
}
使用:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.ex.view.DigitalClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
分享到:
相关推荐
在lcd上显示的数字钟,是各种单片机开发的重要组成部分之一,可以单独调控时分秒,也可以进行秒表计时
自学 Android 做的第十一个 Android 程序,使用了 DigitalClock
用java写的时钟代码,用线程的延迟执行来实现时钟的动态变化
matlab开发-DIGITALCLOCK。这个时钟给出系统时间和日期
钟表程序。使用Qt完成一个如图所示的圆形钟表程序。可以转动,有秒针,时针和分针,按照系统的时间进行转动
应用案例: 大量商品的限时抢购等。 类似于这样的倒计时,不知道大家有没有遇到过,大家又能想到哪些方案?...本源码的方案是对Android 系统中 DigitalClock 进行一次封装。 通过继承以下方法并改变内部的实现。
说明:时钟的LED显示类(用来显示当前时间97*22效果最佳) 版本:V1.0 作者:终日乾乾(在原作者的基础上修改)原作者 Mt.Hu (hmt-abc@163.com) 日期:2011.3.15 QQ号:490096006,需要更多类请与我联系! 使用: 1...
matlab开发-DigitalClock。带闹钟的DigitalClock应用程序
android 数字及模拟小时钟设计 AnalogClock与DigitalClock的原理
DigitalClock只需要在布局文件中,用于显示时间的地方使用此组件即可,无需用java代码进行实例化。 <?xml version=1.0 encoding=utf-8?> <LinearLayout xmlns:android=...
包括DatePicker(日期选择控件)、TimePicker(时间选择控件)、DatePickerDialog(日期选择对话框)、TimePickerDialog(时间选择对话框)、AnalogClock(模拟时钟控件)、DigitalClock(数字时钟控件)。...
digitalCLOCK.ino
digitalClock
DigitalClock
时钟控件包括AnalogClock和DigitalClock,它们都负责显示时钟,所不同的是AnalogClock控件显示模拟时钟,且只显示时针和分针,而DigitalClock显示数字时钟,可精确到秒 以下模拟时钟的用法 目录结构: 布局文件 &...
android digitalclock控件,在程序界面显示时间日期,具体格式直接更改类里内容
Digital clock with display VHDL
Simple programm for add a digital clock with 7 segment to your project