找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3119|回复: 0

[教程] 实现Android中自定义字体的简单方法

[复制链接]
发表于 2017-3-3 14:22:19 | 显示全部楼层 |阅读模式
单调的字体太过乏味,很多时候我们都想要来点不一样的东西。在Android开发中如何实现自定义字体呢?其实Calligraphy就提供在Android中自定义字体的功能,方法也特别简单,这里华清远见为大家分享一下。

由于现在大多数GitHub工程都是用Gradle构建的,所以工程下提供的Sample不能直接导入Eclipse中,所以按照工程Demo,及工程说明文档,在Eclipse中构建自己的GalligraphySample,以下简要说明构建工程的步骤和需要注意的事项。
1.1下载Galligraphy需要依赖的jar包
1.2利用Eclipse创建android工程:GalligraphySample
1.3添加自定义字体到工程asserts/,所有的字体定义都和该路径关联
1.4自定义属性,在工程res/values/attrs.xml下添加自定义属性
1.5在Application类中使用CalligraphyConfig定义默认字体
1.5.1在工程下创建CalligraphyApplication类
1.5.2添加如下代码
@Override
public void onCreate() {
super.onCreate();
CalligraphyConfig.initDefault("fonts/Roboto-ThinItalic.ttf", R.attr.fontPath);
}
1.5.3在AndroidManifest.xml中application标签下添加属性
android:name=".CalligraphyApplication"
1.6在MainActivity中复写attachBaseContext函数
@Override
protected void attachBaseContext(Context newBase) {
// TODO Auto-generated method stub
super.attachBaseContext(new CalligraphyContextWrapper(newBase));
}
构建工程暂时就告一段落了,下面开始使用Calligraphy
2.1在布局文件activity_main.xml中对一个TextView使用特殊字体
<textview< p="">
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fontPath="fonts/Roboto-Bold.ttf"/>
这里需要注意的是,直接使用fontPath时会报错,这是只需在布局容器中添加属性,例如在LinearLayout标签中添加 tools:ignore="MissingPrefix"
运行程序可以看到加粗效果
2.2在TextAppearance中自定义字体
在res/values/styles.xml中添加风格
布局里直接使用style
<textview< p="">
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.FontPath"/>
相应的可以在主题theme和styles中自定义字体
在不同地方定义的字体在使用时候的优先级详细见:
View xml - attr defined here will always take priority.
Style xml - attr defined here is checked next.
TextAppearance xml - attr is checked next, the only caveat to this is IF you have a font defined in theStyle and a TextAttribute defined in the View the Style attribute is picked first!
Theme - if defined this is used.
Default - if defined in the CalligraphyConfig this is used of none of the above are found OR if one of the above returns an invalid font.
OK,描述完毕,在整个过程比较关键也是容易忽视的地方就是在application标签下添加属性 android:name=".CalligraphyApplication",如果少了这个你的效果是出不来的,切记切记!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )

GMT+8, 2021-2-27 12:33 , Processed in 0.054869 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表