基于Android 11 Android Framework 全局替换系统字体
第一种通过替换系统默认字体
-
将需要替换的字体资源放置frameworks/base/data/fonts/目录下。
-
将系统默认的Roboto字体替换为HarmonyOs字体。
frameworks/base/data/fonts/fonts.xml
- frameworks/base/data/fonts/Android.mk
font_src_files :=\# 新增字体资源需配置...HarmonyOs_***.ttf......
- frameworks/base/data/fonts/fonts.mk
PRODUCT_PACKAGES := \# 新增字体资源需配置...HarmonyOs_***.ttf......
编译刷机验证。
第二种通过动态修改Typeface.java
frameworks/base/graphics/java/android/graphics/Typeface.java
- 新增一个SystemProperties属性 persist.sys.customfont
在系统启动期间,判断该属性是否有值存在,如果有的话,将其设置为默认字体
- 应用程序修改:
setProp("persist.sys.customfont", fontPath);public static void setProp(String key, String value) {try {Class<?> c = Class.forName("android.os.SystemProperties");Method set = c.getMethod("set", String.class, String.class);set.invoke(c, key, value );} catch (Exception e) {e.printStackTrace();}
}
- 通过adb命令修改:
编译刷机验证。
查看对比效果