
Android加载字体包及封装
发布日期:2021-05-14 09:35:28
浏览次数:25
分类:精选文章
本文共 1929 字,大约阅读时间需要 6 分钟。
Android自定义TextView加载字体包
在Android开发中,往往需要为特定控件设置不同的字体。TextView
控件是Android中最常用的文本显示控件之一,通过简单的方式即可实现字体包的加载。以下是关于如何在不同需求背景中实现字体包加载的详细说明。
1. 基始实现
要实现TextView
加载字体包,可以按照以下步骤进行操作:
Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/Bold.otf");textView.setTypeface(typeFace);
字体包位置
字体包的位置默认在assets/fonts
目录中。如若需要更换字体包的位置,可自行调整路径。在实际项目中,建议将字体包放在assets/fonts
以便于资源管理和版本控制。
较多需求场景
随着项目的发展,有时会出现以下需求:
- 部分
TextView
加载字体包 - 每个
TextView
加载的字体包可以不同
2. 实现封装
为了满足上述多样化需求,可以通过封装TextView
控件,将字体加载的逻辑进行归类和扩展。
2.1 定义属性
首先,定义一个自定义属性,供xml
中使用:
2.2 创建自定义控件
继承自AppCompatActivity
,并实现如下逻辑:
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 = ""; switch (fontType) { case BOLD: fontPath = "fonts/Bold.otf"; break; case HEAVY: fontPath = "fonts/Heavy.otf"; break; default: break; } if (!TextUtils.isEmpty(fontPath)) { Typeface typeFace = Typeface.createFromAsset(getContext().getAssets(), fontPath); setTypeface(typeFace); } }}
2.3 使用示例
在布局文件中controllers之外添加:
2.4 字体包加载逻辑
通过自定义属性app:fontType
,根据不同的值加载不同的字体包。逻辑清晰,易于扩展。
效果展示
通过以上方法,可以轻松实现不同TextView
显示不同的字体效果。像这样的功能,对于需要在多个场景中使用不同的字体包的项目来说,是非常实用的。
以上方式既满足了基本的字体加载需求,也通过封装实现了灵活化配置的可能,适用于多种项目场景。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月20日 02时11分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CSS3实现动画不会影响主线程,JS实现动画会影响主线程
2019-03-11
vscode设置eslint保存文件时自动修复eslint错误
2019-03-11
2020-12-02 微信JSAPIV3支付
2019-03-11
deepin 安装过程记录
2019-03-11
ES6 Class 继承与 super
2019-03-11
JAVA 多线程
2019-03-11
SQL2008 重启计算机失败
2019-03-11
VMware打开centos黑屏解决方法汇总
2019-03-11