您的位置:首页 > 移动开发

Android开发之设置APP全局字体

2016-09-16 00:47 525 查看
原创作品,转载请注明:Android开发之设置APP全局字体

今天带来一篇和字体有关的:设置APP全局字体。

在开发的过程中可能有需求是使用某种要求的字体而不是默认字体,在使用少的情况下,我们可以选择直接设置或者自定义View,用到的时候使用自定义的TextView。如:

public class CustomFontTextView extends TextView{

public CustomFontTextView(Context context) {
this(context, null);
}

public CustomFontTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public CustomFontTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}

//使用自定义的字体库
private void init(Context context){
AssetManager assetManager=context.getAssets();
Typeface typeface=Typeface.createFromAsset(assetManager, "font/huawenxihei.ttf");
setTypeface(typeface);
}
}


这样子写的话每次要不能用系统的TextView而要用这个自定义TextView,很麻烦。

如果我们想要应用的所有字体都使用给定的字体呢?这时候就要设置全局字体了:

一、在主模块build.gradle中的dependencies里面加入下面这行代码并同步;

testCompile 'junit:junit:4.12'//自定义字体库


二、将准备好的字体库文件放在assets/font目录下;



三、在Application的onCreate()方法里面写上:

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("font/huawenxihei.ttf")
.setFontAttrId(R.attr.fontPath)
.build());
四、创建Activity的基类,重写attachBaseContext(Context newBase)方法,我习惯用一个抽象类BaseActivity,需要的Activity都直接或间接继承这个类,这样的好处我就不多说了;

@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
五、让自己的Activity继承BaseActivity就行了,写一个普通的TextView运行一下就会发现字体已经是想要的字体了。

原创作品,转载请注明:Android开发之设置APP全局字体
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: