android 引用外部字体文件,浅析Android加载字体包及封装的方法

TextView加载字体包

在 Android 中,若需要使得某个TextView加载字体包,使用以下方式即可:

Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/Bold.otf");

textView.setTypeface(typeFace);

至于字体包的位置:

e4c5f263edffcdc59d6ce202caaacd70.png

通过以上方法,可以使得一个TextView加载某种字体包,但是,还有这种需求:

部分TextView加载字体包

每个TextView加载的字体包不一定一样

这时,我们就需要稍微封装下,将其封装成一个自定义TextView类,若需要使用字体包,则加载该类,同时,可以根据xml里面的值,从而加载不同的字体包。

封装

定义属性值

首先,我们需要从xml里面获取值,因此,需要在attr中进行属性值的定义:

bfe622eec91b2614f1cbcf3ec9a3211c.png

这里我只定义了两种属性,大家可以根据需求进行增减。

创建自定义TextView

public class FontTextView extends AppCompatTextView {

public FontTextView(Context context) {

super(context);

}

public FontTextView(Context context, @Nullable AttributeSet attrs) {

this(context, attrs, 0);

}

public FontTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

}

获取属性值

//获取参数

TypedArray a = context.obtainStyledAttributes(attrs,

R.styleable.FontTextView, defStyleAttr, 0);

int fontType = a.getInt(R.styleable.FontTextView_fontType, 1);

进行值判断并加载不同的字体包

private final int BOLD = 1;

private final int HEAVY = 2;

String fontPath = null;

switch (fontType) {

case BOLD:

fontPath = "fonts/Bold.otf";

break;

case HEAVY:

fontPath = "fonts/Heavy.otf";

break;

default:

}

//设置字体

if (!TextUtils.isEmpty(fontPath)) {

Typeface typeFace = Typeface.createFromAsset(getContext().getAssets(), fontPath);

setTypeface(typeFace);

}

全部源码

public class FontTextView extends AppCompatTextView {

private final int BOLD = 1;

private final int HEAVY = 2;

public FontTextView(Context context) {

super(context);

}

public FontTextView(Context context, @Nullable AttributeSet attrs) {

this(context, attrs, 0);

}

public FontTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

//获取参数

TypedArray a = context.obtainStyledAttributes(attrs,

R.styleable.FontTextView, defStyleAttr, 0);

int fontType = a.getInt(R.styleable.FontTextView_fontType, 1);

String fontPath = null;

switch (fontType) {

case BOLD:

fontPath = "fonts/Bold.otf";

break;

case HEAVY:

fontPath = "fonts/Heavy.otf";

break;

default:

}

//设置字体

if (!TextUtils.isEmpty(fontPath)) {

Typeface typeFace = Typeface.createFromAsset(getContext().getAssets(), fontPath);

setTypeface(typeFace);

}

}

}

若需要使用字体包TextView,使用以下方式即可:

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:fontType="bold"

android:text="测试" />

效果

10e2799ce25b19ae5a9e075547c10b2d.png

到此这篇关于浅析Android加载字体包及封装的方法的文章就介绍到这了,更多相关android加载字体包封装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值