android 字体库导入,Android自定义字体

该博客介绍了如何在Android应用中自定义字体,包括在main目录下创建assets/fonts文件夹,添加.otf字体文件,然后创建字体工具类和自定义字体基类,以方便在布局文件中使用。通过AppManager初始化字体,实现了SFCompactText-Semibold字体的加载和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

AAffA0nNPuCLAAAAAElFTkSuQmCC

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;

}

}

布局文件中使用

android:layout_marginTop="27dp"

android:layout_marginBottom="16dp"

android:textColor="@color/green_8CC63F"

android:textSize="25sp"

tools:text="Hi" />

作者:淡淡_孩子气

链接:https://www.jianshu.com/p/a56c96c114b0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值