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开发中,布局是构建用户界面的基础,它决定了应用中元素的排列...
在Android平台上,开发一款数字时钟(Digital Clock)是一个常见的实践项目,可以帮助开发者熟悉Android的UI设计、时间处理以及自定义视图等基础知识。"Android Digital Clock Demo"就是这样一个示例,它展示了如何...
标题 "DIgital_CLOCK.7z" 暗示我们关注的是一个与数字时钟相关的项目,而这个项目被压缩在了一个7z格式的文件中。7z是一种高压缩率的文件格式,由7-Zip软件创建,常用于存储和传输大体积的数据。这种格式支持多种...
数码时钟android课程项目bojnord大学的软件工程该项目的名称: 在这个项目中,我设计了一个带有RelativLayout的实用数字时钟,该数字时钟正在Hibernate。 您可以通过单击“时钟”按钮一次来激活时钟。 在此数字时钟...
应用案例: 大量商品的限时抢购等。 类似于这样的倒计时,不知道大家有没有遇到过,大家又能想到哪些方案?...本源码的方案是对Android 系统中 DigitalClock 进行一次封装。 通过继承以下方法并改变内部的实现。
目标:学习时间日期和时钟的设置 picker的计算机专业解释是“选择器”。 简单翻译一下: TimePicker 时间选择器 DatePicker 日期选择器 AnalogClock 模拟时钟 DigitalClock 数字时钟 一、TimePicker 1.TimePicker...
android:id="@+id/digital_clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="48sp" android:textColor="#ffffff" /> ``` 接下来,在`MainActivity.java...
-- "clock" for digital, "spinner" for analog --> android:initialHourOfDay="10" android:initialMinute="30" android:is24HourView="true" /> ``` 3. **Java代码操作**:在Activity或Fragment中获取...
【文件名称】"ASUS Digital Clock Widget_v3.0.0.35_180117_apkpure.com.apk"是该华硕时钟应用的特定版本,版本号为3.0.0.35,发布日期为2018年1月17日。这个apk文件是从apkpure.com网站下载的,apkpure是一个第三方...
2.3.6 时钟(AnalogClock和Digital Clock)的功能与功法 73 2.3.7 图像视图(ImageView)的 功能和用法 75 2.4 高级界面组件 79 2.4.1 自动完成文本框(AutoCompleteTextView)的 功能和用法 79 ...
本文实例为大家分享了DigitalClock实现商品倒计时的具体代码,供大家参考,具体内容如下 自定义DigitalClock控件: ...import android.os.SystemClock; import android.provider.Settings; import andr
会说话的闹钟 这是一个(非常简单的)Android 语音闹钟应用程序,它是作为 Android 编程入门课程的家庭作业编写的。 这是java和Android的第一次尝试。... alarm1 alarm option #1 (digital alarm) alarm2
这里,`android:format`属性用于指定时间格式,`@string/digital_clock_format`引用了我们之前定义的12小时制格式。 尽管DigitalClock功能相对有限,但它的简单性和易用性使其成为许多Android应用中的常见选择,...
Digital Clock Widget-数字时钟小部件是一个在主屏幕显示数字时间和日期的android桌面插件,能展示时间,触摸激活闹钟和日历,并且字体颜色支持自定义设置.适用平台: Android1.5+
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...
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并设置其文本: ``...