使用自定义字体创建数字时钟小部件

Dav*_*all 13 android widget alarmmanager android-appwidget android-5.1.1-lollipop

我正在尝试使用自定义字体创建数字时钟小部件.事实证明这是我体验Android的最大挑战.(认为​​它会像它一样简单tc.setTypeFace("whatever")并且完成它)

最好的方法似乎是刮擦TextClock并使用a ImageView并使用自定义AlarmManager将Bitmap传递给它,以便每秒为视图创建一个新图像.

在进入Bitmap生成之前,我练习了一个简单的TextView使用本教程的Alarm Manager Widget

我的问题是我无法每秒更新一次.我使用 am.setRepeating(AlarmManager.RTC_WAKEUP , System.currentTimeMillis()+1000, 1000, pi);但它仍然只是每分钟左右更新它(虽然不是每分钟的顶部).我认为这与最新操作系统(Kitkat,Lollipop)的处理方式有关AlarmManagers.

我的问题是:

  1. 这是正确的方法吗?如果没有,请解释我应该做什么.

  2. 如何让窗口小部件每秒更新一次?

Nik*_*tov 3

我遇到了同样的问题...据我所知,到目前为止您有两个选择:

  1. 最简单 - 如果您使用 API 级别 16 或更高级别,您只需android:fontFamily="sans-serif-thin"在 xml 文件中添加属性即可。奇迹般有效!

这是我的文本视图:

<TextView
   android:id="@+id/Time"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:ellipsize="none"
   android:fontFamily="sans-serif-thin"
   android:gravity="center_vertical|center_horizontal"
   android:includeFontPadding="false"
   android:singleLine="true"
   android:text="12:01"
   android:textColor="#fff"
   android:textSize="80sp" />
Run Code Online (Sandbox Code Playgroud)

它是这样的:

在此输入图像描述

此方法的唯一缺点是可以使用的系统字体不多。

  1. 困难的方法是使用您自己的类,像这样扩展 TextView 对象在 xml 文件中定义它而不是普通的 TextView 。我不推荐它,因为它可能会出现错误。

编辑:为了每分钟更新小部件 - 您需要启动一项服务,该服务可以每分钟(或如果您愿意,可以每秒)更新您的时钟。也检查这个例子