`
ipFire
  • 浏览: 122722 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

扩展DigitalClock显示日期+时间

阅读更多

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>
 

 

分享到:
评论

相关推荐

    matlab开发-DIGITALCLOCK

    - `datetime`:将时间戳转换为日期时间对象,可以方便地进行日期和时间操作。 - `datestr`:将日期时间对象转换为字符串,可自定义格式,例如“年-月-日 时:分:秒”。 2. **图形用户界面(GUI)**: - `figure`...

    能够显示当前系统时间

    可能包含了一些基本的时间功能,如小时、分钟和秒的显示,甚至可能包括日期、时区转换、定时提醒等高级功能。 压缩包子文件的文件名称列表揭示了这个项目可能使用的编程语言和开发环境。例如: - `*.cpp` 文件扩展...

    android时间代码

    它的主要功能是实时更新当前的小时、分钟和秒,并可选地显示日期。要使用`DigitalClock`,首先你需要在布局XML文件中添加该控件: ```xml &lt;digitalClock android:id="@+id/digitalClock1" android:layout_width=...

    digitalClock:数字时钟应用

    然而,你还可以进一步扩展它,比如添加AM/PM显示(12小时制),或者根据用户时区调整时间。此外,你也可以考虑添加样式,使时钟看起来更吸引人,比如使用CSS动画或自定义字体。 在压缩包文件"**digitalClock-main**...

    digitalClock

    其中,数字时钟(digitalClock)作为一种常见的实时时间显示组件,被广泛应用于网页、应用程序以及各种用户界面中。本文将深入探讨如何使用HTML这一基础标记语言来实现一个简单的数字时钟,并讨论其可能的应用场景和...

    显示数字钟

    在IT领域,尤其是在软件开发和用户界面设计中,"显示数字钟"是一个常见的需求,它涉及到实时更新时间并以数字格式展示。这篇文章将深入探讨如何创建一个数字钟,包括涉及的技术、步骤以及可能的实现方式。 一、数字...

    js 数字时钟

    在这个例子中,我们可以创建一个名为`DigitalClock`的组件,其中包含显示时间的模板和处理时间更新的方法。 7. **Vue生命周期**:Vue组件有特定的生命周期,包括创建、挂载、更新和销毁等阶段。在`mounted`钩子函数...

    数字时钟,java实现。

    在`DigitalClock`类中,我们需要一个`run`方法来更新并显示时间。我们可以创建一个无限循环,每隔一秒钟更新一次时间: ```java @Override public void run() { while (true) { Calendar calendar = Calendar....

    JAVA语言时钟源码

    在Java中,我们可以使用`java.lang.System.currentTimeMillis()`或`java.time.Clock.systemDefaultZone()`方法来获取系统当前的时间戳或时区相关的日期时间。 下面我们将详细探讨这些可能的知识点: 1. **Java时间...

    c++设计的电子钟

    如果要将电子钟显示在1602液晶屏上,我们需要对`displayOnLCD()`方法进行扩展,将时间格式化为适合1602液晶屏显示的字符串,并使用液晶屏的特定方法(如`print()`)来显示。这需要了解1602液晶屏的初始化命令、字符...

    系统时钟,文字滚动小程序

    在Java 8中,引入了新的日期和时间API,位于`java.time`包下。我们可以使用`Clock`类来获取系统的当前时间。`Clock`提供了一种方式来获取精确到纳秒的时间源,这比旧的`java.util.Date`和`java.util.Calendar`更加...

    Digital-Clock

    本篇文章将深入探讨如何使用JavaScript这一强大的前端编程语言来创建一个动态更新、实时显示当前时间的数码时钟。 首先,我们需要了解JavaScript的基础知识。JavaScript是一种解释型、弱类型、基于原型的脚本语言,...

    android基本的UI控件和布局文件知识要点

    #### 日期与时间选择控件 1. **DatePicker**:用于选择日期。 2. **TimePicker**:用于选择时间。 #### 布局文件 在Android中,布局文件决定了各个控件在屏幕上的排列方式。主要的布局类型包括: 1. **...

    Android2.2 API中文文档——View

    - **ExpandableListView**:可扩展列表视图,可以展示层次结构的数据。 - **Gallery**:画廊视图,用于展示一系列水平排列的项目。 - **GridView**:网格视图,用于展示多列的项目。 - **ImageButton**:图像按钮...

    Google Android SDK开发范例大全.docx

    介绍了两种显示时间的方式:模拟时钟(AnalogClock)和数字时钟(DigitalClock),并探讨了它们的实现原理。 - **4.15 动态输入日期与时间——DatePicker与TimePicker应用** 说明了如何使用DatePicker和TimePicker...

Global site tag (gtag.js) - Google Analytics