系统中一键改变字体大小和样式的方法

相信很多对设计追求极致的开发者们对Android系统的默认字体都会感到不满意,这个时候需要使用自定义的字体,当然可以使用系统提供的Typeface来加载自定义字体,但是,一个个TextView的设置,是不是很快就疯了,本文给大家介绍如何快速定义自定义的app全局字体。

1.字体大小的改变

Resources中的Configuration包含了设备的所有配置信息

通过对Resources中configuration的update更新,设定自己需要的配置信息

例如:默认的语音、字体等


Configuration configuration = getResources().getConfiguration();
configuration.fontScale = (float) 1;
//0.85 小, 1 标准大小, 1.15 大,1.3 超大 ,1.45 特大
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);
系统定制更改字体大小主要是通过更改属性 fontScale 来实现的。(更改应用中所有以sp为单位的TextView的大小)
只要我们在App中 显示的设置一个 fontScale 无论怎样在设置中修改字体大小都不会影响到App中的字体大小。
(ps:dialog popupwindow 除外,这两种需要在控件中重新设置fontScale)
2.字体类型的改变(Typeface)
这里为了方便和快速的修改,引用了github上一个开源库Calligraphy,使用方法只需简单几步,如下:
1.从github上下载Calligraphy:https://github.com/chrisjenx/Calligraphy
2.解压后找到calligraphy文件夹,添加以来到 Android Studio
3.在Application(一般需要自定义一个)里面的onCreat方法中添加:

//gitbun引用,一键修改全部TextView字体
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder().setDefaultFontPath("fonts/FZLTHJW.TTF").setFontAttrId(R.attr.fontPath).build());
其中"FZLTHJW.TTF"是引用的外部字体库,放在Assets下的fonts文件夹中,FFT格式;
4.在Activity中(在继承Activity的基类中)重写 attachBaseContext方法:
//gitbun引用,一键修改全部TextView字体
@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
这样就可以根据自己的需求改变App中字体的样式,如需其他字体,只需改变文色路劲中的字体类型即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值