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

news/2025/2/4 4:48:07/

相信很多对设计追求极致的开发者们对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中字体的样式,如需其他字体,只需改变文色路劲中的字体类型即可。

http://www.ppmy.cn/news/764173.html

相关文章

前端Vue自定义顶部导航栏navBar 导航栏搜索框searchBar 导航栏右侧菜单按钮button

前端Vue自定义顶部导航栏navBar 导航栏搜索框searchBar 导航栏右侧菜单按钮button&#xff0c;下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13342 效果图如下: # cc-headerSearch #### 使用方法 使用方法 <!-- icon: 右侧菜单…

软考:中级软件设计师:进程死锁,死锁的预防和避免,银行算法家,

软考&#xff1a;中级软件设计师:进程死锁 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &…

计算机正在准备从D盘中回收,电脑一直显示正在启动怎么选择重灌系统

电脑一直显示正在启动怎么选择重灌系统以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 电脑一直显示正在启动怎么选择重灌系统 电脑一直显示正在启动无法正常进入系统时可选择重启后直接按F8进入安全模式; 到安…

php 坏了怎么修复,winload.exe丢失或损坏怎么办

winload.exe丢失或损坏的解决办法&#xff1a;1、关机切断电源&#xff0c;检查硬盘等接口&#xff1b;2、逐一排查内存条插槽等等硬件&#xff0c;并进行插拔清理氧化点的处理&#xff1b;3、重装系统&#xff1b;4、使用u盘PE系统修复引导。 本教程操作环境&#xff1a;Dell …

D盘目录或文件被损坏且无法读取怎么办

D盘目录或文件被损坏且无法读取怎么办 突发场景 今天录屏专家录制使用的内存卡突然掉盘&#xff0c;然后这个存储视频的文件夹无法打开&#xff0c;提示位置不可用&#xff1a;文件或目录损坏且无法读取 已经是腾讯管家删除目录也同样无法强制删除该目录 在硬盘上出现"…

LNZ32P4-C - Pan-Tilt-Zoom (PTZ) Camera with 1080p HD Video Color Night Vision

LNZ32P4-C - Pan-Tilt-Zoom (PTZ) Camera with 1080p HD Video & Color Night Vision pan [pn]&#xff1a;n. 平底锅&#xff0c;盘状的器皿&#xff0c;淘盘子&#xff0c;金盘&#xff0c;秤盘 vt. 淘金&#xff0c;在浅锅中烹调&#xff0c;严厉的批评 vi. 淘金&#x…

计算机打开不了C盘,互联网学问:电脑C盘打不开怎么办电脑C盘打不开解决方法...

今天小编跟大家讲解下有关电脑C盘打不开怎么办电脑C盘打不开解决方法 &#xff0c;相信小伙伴们对这个话题应该有所关注吧&#xff0c;小编也收集到了有关电脑C盘打不开怎么办电脑C盘打不开解决方法 的相关资料&#xff0c;希望小伙伴们看了有所帮助。 电脑C盘打不开怎么办? 在…

linux s3 s4,电源选项中S0,S1,S2,S3,S4,S5的含义

ACPI(Advanced Configuration and Power Interface),即高级配置与电源接口。这种新的能源管理可以通过诸如软件控制"开关"系统,亦可以用Modem信号唤醒和关闭系统。 ACPI规范定义了一台兼容ACPI的计算机系统可以有以下七个状态(所谓的全局状态): • G0(S0)正常工作…