Android修改字体_android设置字体样式

2022-11-10 18:19:22 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

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

代码语言:javascript复制
font_src_files := 
    AndroidClock.ttf 
    clock_thin.ttf

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

frameworks/base/data/fonts/fonts.mk

代码语言:javascript复制
PRODUCT_PACKAGES := 
    DroidSansMono.ttf 
    AndroidClock.ttf 
    clock_thin.ttf 
    fonts.xml

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

frameworks/base/data/fonts/fonts.xml

代码语言:javascript复制
<family name="clock-font">
    <font weight="400" style="normal">clock_thin.ttf</font>
</family>

5.使用新添加的字体

方法1:

代码语言:javascript复制
TextView textView = new TextView(mContext);
textView.setTypeface(android.graphics.Typeface.createFromFile("/system/fonts/clock_thin.ttf"));

方法2:

代码语言:javascript复制
<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

代码语言:javascript复制
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

代码语言:javascript复制
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 人点赞