美文网首页
Android实现全局替换字体

Android实现全局替换字体

作者: itfitness | 来源:发表于2021-06-19 21:55 被阅读0次

目录

效果展示

原生替换字体
WebView本地网页替换字体

实现步骤

原生替换字体
1.创建MyApplication并在AndroidManifest中引用

<application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".WebViewActivity"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

2.自定义application的theme设置默认字体为monospace

   <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>
        <!--    设置默认字体为monospace    -->
        <item name="android:typeface">monospace</item>
    </style>

3.在MyApplication中利用反射替换字体

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        changeTTF();
    }

    private void changeTTF() {
        Typeface typefaceALTAN = Typeface.createFromAsset(getAssets(), "fonts/ALTAN.TTF");
        try {
            Field typefaceField = Typeface.class.getDeclaredField("MONOSPACE");
            typefaceField.setAccessible(true);
            typefaceField.set(null,typefaceALTAN);
        }catch (Exception e){}
    }
}

本地网页替换字体
在样式中定义字体,然后将所有标签的字体改为自己定义的那个即可

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            @font-face {
                font-family:'ALTAN';
                src: url("file:///android_asset/fonts/ALTAN.TTF");
            }
            *{
                font-family: 'ALTAN';
            }
        </style>
    </head>
    <body>
        <p>Hello World</p>
        <h1>Hello World</h1>
    </body>
</html>

最后要注意这里的字体文件和本地网页都放在了assets文件夹下


案例源码

https://gitee.com/itfitness/change-ttf

相关文章

  • Android实现全局替换字体

    目录 效果展示 实现步骤 原生替换字体1.创建MyApplication并在AndroidManifest中引用 ...

  • Android 全局替换字体

    1. 替换全局字体 需要引入依赖 在 res 目录下创建一个 font 目录,将用到的字体复制进去,然后再创建一个...

  • Android App全局字体替换

    【注】 https://blog.csdn.net/u011840744/article/details/5076...

  • android更换字体

    android更换字体 最近在研究android端字体替换需求,发现还是有很多方式来替换字体。 一,前言 Andr...

  • Android之全局替换字体库

    Android O推出了一项新的功能「Fonts in XML」(中文翻译),借助这项功能,我们能够像使用其他资源...

  • iOS字体全局替换

    产品让把APP中的字体替换为Roboto,首先想到给UIFont添加分类,利用runtime进行方法替换,将使用s...

  • 反射方式修改App字体

    自定义Applicaiton,实现全局App修改,对于字体也是同理,通过Typeface设置加载App全局字体,对...

  • 粗暴的方式,替换全局字体

    序 在 Android 下使用自定义字体已经是一个比较常见的需求了,最近也做了个比较深入的研究。 那么按照惯例我又...

  • 通过修改 LayoutInflater,全局替换字体!!!

    序 在 Android 下使用自定义字体已经是一个比较常见的需求了,最近也做了个比较深入的研究。 那么按照惯例我又...

  • Android 全局设置字体

    Android 8.0 和 Android 支持库 26 允许您从提供程序应用请求字体,而无需将字体绑定到 APK...

网友评论

      本文标题:Android实现全局替换字体

      本文链接:https://www.haomeiwen.com/subject/esbdyltx.html