`

android Digital Clock

阅读更多
package net.flync.pc2.tv.widget;



import java.util.Calendar;



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 m12 = "aa h:mm";//h:mm:ss aa

private final static String m24 = "k:mm";//k:mm:ss

private FormatChangeObserver mFormatChangeObserver;



private Runnable mTicker;

private Handler mHandler;



private boolean mTickerStopped = false;



String mFormat;



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);



setFormat();

}



@Override

protected void onAttachedToWindow() {

mTickerStopped = false;

super.onAttachedToWindow();

mHandler = new Handler();



/**

* requests a tick on the next hard-second boundary

*/

mTicker = new Runnable() {

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();

}



@Override

protected void onDetachedFromWindow() {

super.onDetachedFromWindow();

mTickerStopped = true;

}



/**

* Pulls 12/24 mode from system settings

*/

private boolean get24HourMode() {

return android.text.format.DateFormat.is24HourFormat(getContext());

}



private void setFormat() {

if (get24HourMode()) {

mFormat = m24;

} else {

mFormat = m12;

}

}



private class FormatChangeObserver extends ContentObserver {

public FormatChangeObserver() {

super(new Handler());

}



@Override

public void onChange(boolean selfChange) {

setFormat();

}

}

}
分享到:
评论

相关推荐

    Android Digital Clock Demo beta1

    "Android Digital Clock Demo beta1"是这样一个项目的早期版本,旨在实现这些核心功能并优化用户体验。 首先,我们需要关注的是布局设计。在Android开发中,布局是构建用户界面的基础,它决定了应用中元素的排列...

    Android Digital Clock Demo

    在Android平台上,开发一款数字时钟(Digital Clock)是一个常见的实践项目,可以帮助开发者熟悉Android的UI设计、时间处理以及自定义视图等基础知识。"Android Digital Clock Demo"就是这样一个示例,它展示了如何...

    DIgital_CLOCK.7z

    标题 "DIgital_CLOCK.7z" 暗示我们关注的是一个与数字时钟相关的项目,而这个项目被压缩在了一个7z格式的文件中。7z是一种高压缩率的文件格式,由7-Zip软件创建,常用于存储和传输大体积的数据。这种格式支持多种...

    digital-clock:数字时钟设计

    数码时钟android课程项目bojnord大学的软件工程该项目的名称: 在这个项目中,我设计了一个带有RelativLayout的实用数字时钟,该数字时钟正在Hibernate。 您可以通过单击“时钟”按钮一次来激活时钟。 在此数字时钟...

    Android DigitalClock实现倒计时

    应用案例: 大量商品的限时抢购等。 类似于这样的倒计时,不知道大家有没有遇到过,大家又能想到哪些方案?...本源码的方案是对Android 系统中 DigitalClock 进行一次封装。 通过继承以下方法并改变内部的实现。

    A07_TimePicker DatePicker AnalogClock DigitalClock 的设置小结

    目标:学习时间日期和时钟的设置 picker的计算机专业解释是“选择器”。 简单翻译一下: TimePicker 时间选择器 DatePicker 日期选择器 AnalogClock 模拟时钟 DigitalClock 数字时钟 一、TimePicker 1.TimePicker...

    Eclipse编写的Android数字时钟应用实例(用新建Runnable的方法)

    android:id="@+id/digital_clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="48sp" android:textColor="#ffffff" /> ``` 接下来,在`MainActivity.java...

    Android TimePicker时间控件

    -- "clock" for digital, "spinner" for analog --> android:initialHourOfDay="10" android:initialMinute="30" android:is24HourView="true" /> ``` 3. **Java代码操作**:在Activity或Fragment中获取...

    asus clock apk

    【文件名称】"ASUS Digital Clock Widget_v3.0.0.35_180117_apkpure.com.apk"是该华硕时钟应用的特定版本,版本号为3.0.0.35,发布日期为2018年1月17日。这个apk文件是从apkpure.com网站下载的,apkpure是一个第三方...

    疯狂Android讲义源码

     2.3.6 时钟(AnalogClock和Digital  Clock)的功能与功法 73  2.3.7 图像视图(ImageView)的  功能和用法 75  2.4 高级界面组件 79  2.4.1 自动完成文本框(AutoCompleteTextView)的  功能和用法 79  ...

    Android自定义DigitalClock控件实现商品倒计时

    本文实例为大家分享了DigitalClock实现商品倒计时的具体代码,供大家参考,具体内容如下 自定义DigitalClock控件: ...import android.os.SystemClock; import android.provider.Settings; import andr

    android-talking-alarm-clock:一个(非常简单的)Android 通话闹钟应用

    会说话的闹钟 这是一个(非常简单的)Android 语音闹钟应用程序,它是作为 Android 编程入门课程的家庭作业编写的。 这是java和Android的第一次尝试。... alarm1 alarm option #1 (digital alarm) alarm2

    Android DigitalClock组件用法实例

    这里,`android:format`属性用于指定时间格式,`@string/digital_clock_format`引用了我们之前定义的12小时制格式。 尽管DigitalClock功能相对有限,但它的简单性和易用性使其成为许多Android应用中的常见选择,...

    一款手机显示时间的软件

    Digital Clock Widget-数字时钟小部件是一个在主屏幕显示数字时间和日期的android桌面插件,能展示时间,触摸激活闹钟和日历,并且字体颜色支持自定义设置.适用平台: Android1.5+

    AppWidget桌面时钟插件的实现

    android:id="@+id/digital_clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textSize="36sp" /> ``` **3. 注册App...

    abcd-alibaba-dd.zip

    2. "ddzs.apk" - 另一个Android应用,"ddzs"可能是"Data Dashboard"或"Digital Dashboard"的缩写,可能是一个数据可视化工具,用于展示和分析数据。 3. "dingding_explain.txt" - 这个文件可能是钉钉(DingDing)的...

    数码时钟

    android:id="@+id/digital_clock_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="48sp" /> ``` 然后,在Kotlin代码中获取这个TextView并设置其文本: ``...

Global site tag (gtag.js) - Google Analytics