相信很多对设计追求极致的开发者们对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方法中添加:
4.在Activity中(在继承Activity的基类中)重写 attachBaseContext方法:
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中字体的样式,如需其他字体,只需改变文色路劲中的字体类型即可。