Android修改时钟字体

56 篇文章 0 订阅
51 篇文章 2 订阅

1.将需要添加的ttf字体文件放在 frameworks/base/data/fonts/ 目录

A:frameworks/base/data/fonts/clock_thin.ttf

2.修改 frameworks/base/data/fonts/Android.mk 文件,将字体文件编译到 system/fonts/ 目录中

M:frameworks/base/data/fonts/Android.mk

font_src_files := \
    AndroidClock.ttf \
    clock_thin.ttf

3.修改 frameworks/base/data/fonts/fonts.mk 文件

frameworks/base/data/fonts/fonts.mk

PRODUCT_PACKAGES := \
    DroidSansMono.ttf \
    AndroidClock.ttf \
    clock_thin.ttf \
    fonts.xml

4.在 fonts.xml 文件中定义字体对应的名称

frameworks/base/data/fonts/fonts.xml

<family name="clock-font">
    <font weight="400" style="normal">clock_thin.ttf</font>
</family>

5.使用新添加的字体

方法1:

TextView textView = new TextView(mContext);
textView.setTypeface(android.graphics.Typeface.createFromFile("/system/fonts/clock_thin.ttf"));

方法2:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fontFamily="clock-font" />

6.在项目中的具体使用实例

alps/frameworks/base/core/java/android/widget/RemoteViews.java

public class RemoteViews implements Parcelable, Filter {
    ...
    private class TextViewSizeAction extends Action {
        ...
        @Override
        public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
            final TextView target = root.findViewById(viewId);
            if (target == null) return;

            //通过特殊约定的参数(如77,0)来特殊设置TextView的字体
            if(units == -77 && size == 0f){
                target.setTypeface(android.graphics.Typeface.createFromFile("/system/fonts/clock_thin.ttf"));
            }else{
                target.setTextSize(units, size);
            }
        }
        ...
    }
    ...
}

alps/vendor/mediatek/proprietary/packages/apps/DeskClock/src/com/android/alarmclock/DigitalAppWidgetProvider.java

public class DigitalAppWidgetProvider extends AppWidgetProvider {
    private static RemoteViews relayoutWidget(Context context, AppWidgetManager wm, int widgetId, Bundle options, boolean portrait) {
        final String packageName = context.getPackageName();
        final RemoteViews rv = new RemoteViews(packageName, R.layout.digital_widget);
        //通过特殊约定的参数(如77,0)来特殊设置TextView的字体,这里调用setTextViewTextSize方法就会调用RemoteViews的内部类TextViewSizeAction的apply方法
        rv.setTextViewTextSize(R.id.clock, -77, 0f);
        ...
    }
    ...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio提供了一种创建和定制时钟应用程序的平台。首先,我们需要创建一个新的Android项目。在项目结构中,我们可以选择适当的包名和应用程序名称。然后,我们可以开始构建我们的时钟应用程序。 在布局文件中,我们可以使用TextView来显示时间。我们可以设置一个初始时间并在主活动中更新时间。 使用Java逻辑,我们可以在主活动中创建一个Runnable,通过handler.postDelayed()方法每秒钟更新一次时间。我们可以使用SimpleDateFormat类来格式化和显示当前的时间。我们还可以添加适当的条件来确保时间格式的一致性,并在时钟以12小时制或24小时制显示。 我们还可以添加用户交互的功能,例如点击屏幕时暂停或继续时钟。我们可以通过在布局文件中添加一个按钮,并在活动逻辑中添加相应的代码来实现此功能。 另外,我们可以自定义时钟的外观。我们可以通过更改TextView的文字颜色、背景颜色、字体样式等来美化时钟界面。我们还可以根据需要添加其他元素,例如时钟指针或闹钟功能。 最后,在AndroidManifest.xml文件中,我们需要添加权限以访问系统时间。我们可以通过添加以下代码来声明权限: ``` <uses-permission android:name="android.permission.SET_TIME"/> ``` 总之,使用Android Studio可以轻松创建时钟应用程序。通过使用适当的布局文件和Java代码,我们可以实现一个基本的时钟应用程序,并根据需要进行定制。 ### 回答2: Android Studio 是一款功能强大的集成开发环境,被广泛用于开发安卓应用程序。其中一个常见的例子是使用 Android Studio 来开发一个时钟应用程序。 时钟应用程序是一个常用的应用程序,用户可以通过它来查看当前的时间。在 Android Studio 中开发一个时钟应用程序可以通过以下步骤完成: 1. 创建一个新的 Android 项目:在 Android Studio 中,选择“File”菜单,然后选择“New”>“New Project”。填写相关信息,例如应用程序的名称和包名,并选择目标安卓版本。 2. 设计应用程序的界面:在“res”文件夹中选择“layout”文件夹,打开“activity_main.xml”文件。通过拖拽和放置按钮(Button)和文本视图(TextView)等组件到界面中,设计出时钟应用程序的界面布局。 3. 在应用程序的逻辑代码中实现时钟功能:在“java”文件夹中选择“MainActivity.java”文件。在该文件中,使用合适的变量和方法实现获取当前时间,并更新界面上的文本视图显示当前时间。 4. 运行和测试应用程序:点击 Android Studio 工具栏上的“Run”按钮来运行应用程序,选择合适的模拟器或连接的设备。然后就可以在模拟器或设备上查看并测试时钟应用程序的功能。 通过以上步骤,可以在 Android Studio 中开发一个简单的时钟应用程序。当然,开发一个完整功能强大的时钟应用程序还需要更多的代码和功能,例如添加闹钟功能、界面美化和自定义功能等。但是,以上步骤给出了一个基本的开发框架,可以帮助开发者在 Android Studio 中开始开发时钟应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值