浅析Android加载字体包及封装的方法
时间:2022-07-26
本文章向大家介绍浅析Android加载字体包及封装的方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
TextView加载字体包
在 Android 中,若需要使得某个TextView
加载字体包,使用以下方式即可:
Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/Bold.otf");
textView.setTypeface(typeFace);
至于字体包的位置:
通过以上方法,可以使得一个TextView
加载某种字体包,但是,还有这种需求:
- 部分
TextView
加载字体包 - 每个
TextView
加载的字体包不一定一样
这时,我们就需要稍微封装下,将其封装成一个自定义TextView
类,若需要使用字体包,则加载该类,同时,可以根据xml
里面的值,从而加载不同的字体包。
封装
定义属性值
首先,我们需要从xml
里面获取值,因此,需要在attr
中进行属性值的定义:
<declare-styleable name="FontTextView"
<attr name="fontType" format="enum"
<enum name="bold" value="1" /
<enum name="heavy" value="2" /
</attr
</declare-styleable
这里我只定义了两种属性,大家可以根据需求进行增减。
创建自定义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
,使用以下方式即可:
<com.jm.core.common.widget.textview.FontTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fontType="bold"
android:text="测试" /
效果
到此这篇关于浅析Android加载字体包及封装的方法的文章就介绍到这了,更多相关android加载字体包封装内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!
- 选择一款适合自己的ruby on rails IDE开发工具
- 微信的两种用途
- Sqlite快速上手使用指南
- 自动类型安全的.NET标准REST库refit
- 实现WebSocket和WAMP协议的开源库WampSharp
- Centos下部署DRBD+NFS+Keepalived高可用环境记录
- jQuery方法position()与offset()区别
- 温故而知新:设计模式之桥接模式(Bridge)
- 温故而知新:设计模式之装饰模式(Decorator)
- 域名“宝贝”baby.cn以71万元价格结拍
- 温故而知新:设计模式之组合模式(Composite)
- ruby学习笔记(7)-闭包
- ruby学习笔记(6)-Array的使用
- centos7下部署iptables环境纪录(关闭默认的firewalle)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Redis 备份、容灾及高可用实战
- 容器技术|Docker三剑客之Compose
- ProxySQL+Mysql实现数据库读写分离实战
- 打造高逼格、可视化的Docker容器监控系统平台
- 企业面试题|最常问的MySQL面试题集合(一)
- 深入理解消息中间件技术之RabbitMQ服务
- 手把手从0开始教你搭建Jumpserver,为服务器安全保驾护航!
- 企业面试题|最常问的MySQL面试题集合(二)
- 值得一看的35个Redis面试题总结
- 容器技术|Docker三剑客之docker-machine
- 企业面试题|最常问的MySQL面试题集合(三)
- 「微服务架构」API版本控制最佳实践介绍
- 2020年最新字节、阿里、腾讯、爱奇艺等BAT Android社招高频面试题,押题99.98%!
- 使用镜像部署 Hexo 静态页面
- 基于zmq RPC简单C++实现