修改Android原生字体

首先我们来看一下,android原生字体放在哪个目录下.

这里写图片描述

没错,android的原生字体在系统的system/fonts里面,我这个里面有大量的.ttf文件字体,是因为我之前用串口拷进去的.其实android原生字体只用了3个.ttf的文件.

这里写图片描述

上图中用红圈标记出来的就是android原生用的字体,吐槽一下,android原生字体非常的丑(个人感觉).

修改android原生字体的有三种方法:
1.单一修改:只想修改某一个或则几个的,则可用mSetUp.setTypeface(Typeface.createFromAsset(getAssets(),"fonts/jiantihei.TTC"));
来修改单一字体.前提是要在assets文件下方如你要修改字体的.ttf资源文件.

2.如果要修改的字比较多或则整个app的字体都要修改的话,用方案1的话就比较麻烦了.那我们就采用全局修改.

public class FontsOverrideUtil {

    private enum DefaultFont {
        DEFAULT("DEFAULT"),
        DEFAULT_BOLD("DEFAULT_BOLD"),
        MONOSPACE("MONOSPACE"),
        SERIF("SERIF"),
        SANS_SERIF("SANS_SERIF");

        private String value;

        DefaultFont(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    public static final String REPLACE_FONT = "fonts/jiantihei.TTC";

    /**
     * @param context
     */
    public static final void init(Context context) {
        final Typeface replace = Typeface.createFromAsset(context.getAssets(), REPLACE_FONT);
        for (DefaultFont defaultFont : DefaultFont.values()) {
            replaceFont(defaultFont.getValue(), replace);
        }
    }

    public static final void replaceFont(String fontName, Typeface typeface) {
        try {
            final Field staticField = Typeface.class.getDeclaredField(fontName);
            staticField.setAccessible(true);
            staticField.set(null, typeface);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}

我直接把写好的工具类给你们,也没什么难的,主要用的反射.然后在你的application里面触发一下FontsOverrideUtil.init(this);

还没完,这样做了,当你运行起来的时候,发现字体还是没有变成你想要的.感觉是不是被坑了.别着急,我们已走了99步了,还差一步就ok了,在你整个app的styles里面加上<item name="android:typeface">monospace</item>这个就大功告成了.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:typeface">monospace</item>
    </style>

在运行一下,你这个app里面的所有字体全部替换了.

3.修个整个手机的字体,这个就是把原生的字体干掉,换成你的.但是这样需要你的手机root,方法就是移除他的用的那几个字体,上面已给出了,然后修改你的字体名.要和android原生的名字一模一样,替换下就行了.偷下懒,下面的我就不写了,自己去摸索吧!我是不是很贱,嘻嘻.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值