Android自己设置字体

作者 : 开心源码 本文共3426个字,预计阅读时间需要9分钟 发布时间: 2022-05-12 共144人阅读

在main文件夹下,新建assets/fonts文件,增加.otf文件

image.png

字体工具类

import android.app.Application;import android.graphics.Typeface;/** * 字体工具类 * author:wiki on 2018/11/9 * email:zhengweiqunemail@qq.com */public class CustomFontManager {    private static CustomFontManager singleton;    private Typeface lightFont;    private Typeface boldFont;    private CustomFontManager() {    }    public void init(final Application context) {        //读取字体文件        this.lightFont = Typeface.createFromAsset(context.getAssets(), "fonts/SFCompactText-Light.otf");        this.boldFont = Typeface.createFromAsset(context.getAssets(), "fonts/SFCompactText-Semibold.otf");    }    public synchronized static CustomFontManager getInstance() {        if (singleton == null) {            singleton = new CustomFontManager();        }        return singleton;    }    public Typeface getLightFont() {        return this.lightFont;    }    public Typeface getBoldFont() {        return this.boldFont;    }}

自己设置字体基类

import android.content.Context;import android.support.v7.widget.AppCompatTextView;import android.util.AttributeSet;/** * 自己设置字体类型 基类 * author:wiki on 2018/11/9 * email:zhengweiqunemail@qq.com */public abstract class BaseCustomTextView extends AppCompatTextView {    public BaseCustomTextView(Context context) {        super(context);        setFont();    }    public BaseCustomTextView(Context context, AttributeSet attrs) {        super(context, attrs);        setFont();    }    public BaseCustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        setFont();    }    protected abstract void setFont();}

字体类

import android.content.Context;import android.util.AttributeSet;import com.sugrsugr.ivyapp.sugrsmartivy.util.CustomFontManager;/** * SFCompactText-Semibold 字体 * author:wiki on 2018/11/9 * email:zhengweiqunemail@qq.com */public class CustomBoldTextView extends BaseCustomTextView {    public CustomBoldTextView(Context context) {        super(context);    }    public CustomBoldTextView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public CustomBoldTextView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void setFont() {        setTypeface(CustomFontManager.getInstance().getBoldFont());    }}

AppManager中初始化字体

import android.content.Context;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.support.multidex.MultiDexApplication;import com.sugrsugr.ivyapp.sugrsmartivy.util.CustomFontManager;/** * 初始化资源 * author:wiki on 2018/11/9 * email:zhengweiqunemail@qq.com */public final class AppManager extends MultiDexApplication {    private static AppManager instance;        public static AppManager getInstance() {        return instance;    }    public static Context getContext() {        return instance.getApplicationContext();    }    @Override    public void onCreate() {        super.onCreate();        instance = this;        //初始化字体类        CustomFontManager.getInstance().init(this);    }    /**     * 获取本地软件版本号     */    public static int getLocalVersion(Context ctx) {        int localVersion = 0;        try {            PackageInfo packageInfo = ctx.getApplicationContext()                    .getPackageManager()                    .getPackageInfo(ctx.getPackageName(), 0);            localVersion = packageInfo.versionCode;        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        return localVersion;    }    /**     * 获取本地软件版本号名称     */    public static String getLocalVersionName(Context ctx) {        String localVersion = "";        try {            PackageInfo packageInfo = ctx.getApplicationContext()                    .getPackageManager()                    .getPackageInfo(ctx.getPackageName(), 0);            localVersion = packageInfo.versionName;        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        return localVersion;    }}

布局文件中使用

<com.sugrsugr.ivyapp.sugrsmartivy.widget.CustomBoldTextView            android:layout_marginTop="27dp"            android:layout_marginBottom="16dp"            android:textColor="@color/green_8CC63F"            android:textSize="25sp"            tools:text="Hi" />

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Android自己设置字体

发表回复