zoukankan      html  css  js  c++  java
  • Android 导入外部字体的完美解决方案

    第一步:在main文件夹下添加assets文件,下面再建fonts文件夹 然后引入外部字体。

    第二步:建一个字体工具类。

     1 package com.xxxx.xxxx.fonts;
     2 
     3 import android.content.Context;
     4 import android.graphics.Typeface;
     5 
     6 import java.lang.reflect.Field;
     7 
     8 /**
     9  * 覆盖字体工具类
    10  * Created by leict on 2017/2/28.
    11  */
    12 
    13 public final class FontsOverride {
    14     /**
    15      * 设置默认字体
    16      *
    17      * @param context
    18      * @param staticTypefaceFieldName
    19      * @param fontAssetName
    20      */
    21     public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) {
    22         final Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName);
    23         replaceFont(staticTypefaceFieldName, regular);
    24     }
    25 
    26     /**
    27      * 替换字体
    28      *
    29      * @param staticTypefaceFieldName
    30      * @param newTypeface
    31      */
    32     protected static void replaceFont(String staticTypefaceFieldName, final Typeface newTypeface) {
    33         try {
    34             final Field staticField = Typeface.class.getDeclaredField(staticTypefaceFieldName);
    35             staticField.setAccessible(true);
    36             staticField.set(null, newTypeface);
    37         } catch (NoSuchFieldException | IllegalAccessException e) {
    38             e.printStackTrace();
    39         }
    40     }
    41 }

    第三步:在全局中初始化。

     1 package com.xxxx.xxxxx.application;
     2 
     3 import android.app.Application;
     4 
     5 import com.xxxx.travel.fonts.FontsOverride;
     6 
     7 /**
     8  * 全局变量
     9  * Created by leict on 2017/2/27.
    10  */
    11 
    12 public class BaseApplication extends Application {
    13     @Override
    14     public void onCreate() {
    15         super.onCreate();
    16         FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/simkai.ttf");
    17         FontsOverride.setDefaultFont(this, "SANS", "fonts/simhei.ttf");
    18         FontsOverride.setDefaultFont(this, "SERIF", "fonts/simfang.ttf");
    19     }
    20 }

    第四步:xml代码展示。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="世界你好"
                    android:textSize="24sp"
                    android:typeface="monospace" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="世界你好"
                    android:textSize="24sp"
                    android:typeface="sans" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="世界你好"
                    android:textSize="24sp"
                    android:typeface="serif" />
    
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="世界你好!"
                    android:textSize="24sp"
                    android:typeface="serif" />
    
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="世界你好!"
                    android:textSize="24sp"
                    android:typeface="sans" />
    
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="世界你好!"
                    android:textSize="24sp"
                    android:typeface="monospace" />
    
                <Button
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="提交"
                    android:textSize="24sp"
                    android:typeface="serif" />
    
                <Button
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="提交"
                    android:textSize="24sp"
                    android:typeface="sans" />
    
                <Button
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="提交"
                    android:textSize="24sp"
                    android:typeface="monospace" />
            </LinearLayout>
        </ScrollView>
    </LinearLayout>

    效果图:

  • 相关阅读:
    How To Build CyanogenMod Android for smartphone
    CentOS安装Code::Blocks
    How to Dual boot Multiple ROMs on Your Android SmartPhone (Upto Five Roms)?
    Audacious——Linux音乐播放器
    How to Dual Boot Multiple ROMs on Your Android Phone
    Everything You Need to Know About Rooting Your Android Phone
    How to Flash a ROM to Your Android Phone
    什么是NANDroid,如何加载NANDroid备份?
    Have you considered compiled a batman-adv.ko for android?
    BATMAN—Better Approach To Mobile Adhoc Networking (B.A.T.M.A.N.)
  • 原文地址:https://www.cnblogs.com/xiaoyao095/p/6478194.html
Copyright © 2011-2022 走看看