Android Framework 全局替换系统字体

基于Android 11 Android Framework 全局替换系统字体

第一种通过替换系统默认字体

  1. 将需要替换的字体资源放置frameworks/base/data/fonts/目录下。

  2. 将系统默认的Roboto字体替换为HarmonyOs字体。

frameworks/base/data/fonts/fonts.xml

Android Framework 全局替换系统字体_第1张图片

  1. frameworks/base/data/fonts/Android.mk
font_src_files :=\
    #	新增字体资源需配置
  	...
	HarmonyOs_***.ttf
	...
	...
  1. frameworks/base/data/fonts/fonts.mk
 PRODUCT_PACKAGES := \

    #	新增字体资源需配置
  	...
	HarmonyOs_***.ttf
	...
	...

编译刷机验证。

第二种通过动态修改Typeface.java

frameworks/base/graphics/java/android/graphics/Typeface.java

  • 新增一个SystemProperties属性 persist.sys.customfont
    在系统启动期间,判断该属性是否有值存在,如果有的话,将其设置为默认字体
    Android Framework 全局替换系统字体_第2张图片
  • 应用程序修改:
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命令修改:
    Android Framework 全局替换系统字体_第3张图片

编译刷机验证。

查看对比效果
Android Framework 全局替换系统字体_第4张图片
Android Framework 全局替换系统字体_第5张图片

你可能感兴趣的:(android,frameworks,系统字体)