Android系统中可以设置字体大小,对于一些设置了特大号字体的设备,往往会出现布局错乱的情况,对此,需要做相关的字体大小适配。根据聊聊 Android 中的字体大小适配这篇博客提供的方案,进行了一些改进,找到了一种比较合适的方式,将字体大小控制在合理范围内。

以MIUI为例,系统中设置的字体大小对应的fontScale如下

巨无霸 1.4
超大 1.4
大号 1.32
中号 1.15
标准 1
小号 0.86

小号字体下,会比较精致,不作处理。对于大号字体,使其fontScale强制改为指定值,以解决布局错乱的情况。
封装为工具类如下

public class FontCompatUtils {public static final float MAX_FONT_SCALE = 1.10F; //可自行修改最大缩放值public static final String TAG = "FontCompatUtils";private static Float fontScalePercent = null;public static Resources getResources(Resources res) {Configuration configuration = res.getConfiguration();if (fontScalePercent == null) {fontScalePercent = 1 / configuration.fontScale;}if (shouldChangeFontScale(configuration)) {//非默认值Configuration newConfig = new Configuration();newConfig.setToDefaults();//设置默认//configuration.fontScale = MAX_FONT_SCALE;res.updateConfiguration(newConfig, res.getDisplayMetrics());}return res;}/*** 是否需要改变字体缩放级别** @param configuration* @return*/public static boolean shouldChangeFontScale(Configuration configuration) {return configuration.fontScale > MAX_FONT_SCALE;}/*** 字体缩放比例** @return*/public static Float getFontScalePercent() {if (fontScalePercent == null) {return 1F;}return fontScalePercent;}
}

然后,在Application和BaseActivity中,重写getResourcesonConfigurationChanged方法

@Override
public void onConfigurationChanged(Configuration newConfig) {if (FontCompatUtils.shouldChangeFontScale(newConfig))getResources();super.onConfigurationChanged(newConfig);
}@Override
public Resources getResources() {return FontCompatUtils.getResources(super.getResources());
}

至此,我们就完成了字体大小的适配。

其他

更多适配方案,详见聊聊 Android 中的字体大小适配
屏幕适配方案详见 Android屏幕适配大全

Android 中的字体大小适配相关推荐

  1. android 字体大小属于什么类型,聊聊 Android 中的字体大小适配

    本篇文章已授权微信公众号 guolin_blog(郭霖)独家发布 前言 虽然去年写的一篇文章[一种非常好用的Android屏幕适配]就包含字体大小适配,但那篇文章讲的是根据不同屏幕尺寸来适配字体大小的 ...

  2. android ui适配大字体,Android UI总结 Android 和H5 字体大小适配

    1.Android字体 1. 像素:像素(pixel)为图像的基本单位,是一个抽象的采样.一般作为一个最小的显示单位内置RGB. 2.屏幕尺寸:指屏幕的物理尺寸,一般用屏幕的对角线长度表示 3.宽高比 ...

  3. Android中,字体大小自适应不同分辨率,以及注意事项

    今天有人问我, Android系统不同分辨率,不同大小的手机,字体大小怎么去适应呢?其实字体的适应和图片的适应是一个道理的. 一. 原理如下: 假设需要适应320x240,480x320分辨率.在re ...

  4. 聊一聊Android中的字体适配

    今日科技快讯 据The Verge报道,就在发射进入轨道的第二天,SpaceX的"载人龙飞船"(Crew Dragon)与国际空间站实现对接,这是该公司目前测试飞行的关键部分.当& ...

  5. Android中设置字体居中,【Android】TextView中不同大小字体如何上下垂直居中?

    前言 在客户端开发中,我们往往需要对一个TextView的文字的部分内容进行特殊化处理,比如加粗.改变颜色.加链接.下划线等.iOS为我们提供了AttributedString,而Android则提供 ...

  6. android 设置字体大小和不同颜色,Android代码中设置字体大小,字体颜色,显示两种颜色.倒计时效果...

    Android代码中设置字体大小,字体颜色,显示两种颜色 在xml文件中字体大小用的像素 android:id="@+id/uppaid_time" android:layout_ ...

  7. android 字体慢慢变大 网易新闻,如何在网易新闻中设置字体大小?在网易新闻中设置字体大小的方法...

    大家经常使用网易新闻吧,我们可以在里面查看许多新的消息,下面小编给大家分享一下在网易新闻中设置字体大小的方法,希望会对你有所帮助. 1.打开网易新闻客户端,进入网易新闻主界面后,在主界面中可以看到当天 ...

  8. iOS字体大小适配的几种方法

    摘要:在iOS开发中,有些公司对字体也有适配要求,为了让字体美观,所以在不同尺寸的屏幕上字体大小也要做到适配. 自己总结了几种方法供大家参考. 方法一:用宏定义适配字体大小(根据屏幕尺寸判断) //宏 ...

  9. iOS字体大小适配机型的几种方法

    在iOS开发中,有些公司对字体也有适配要求,为了让字体美观,所以在不同尺寸的屏幕上字体大小也要做到适配. 自己总结了几种方法供大家参考. 方法一:用宏定义适配字体大小(根据屏幕尺寸判断) //宏定义 ...

最新文章

  1. 如果QQ秀和拍拍(易迅)深度合作,会有哪些化学反应?
  2. 谷歌的算法笔记火了,技术真牛!
  3. 使用js如何获取treeview控件的当前选中的节点
  4. Tomcat闪退的解决办法
  5. tensorflow 十四 强化学习Q-learning
  6. [Android]Thread线程入门3--多线程
  7. TypeScript入门指南(译文)
  8. 卖出总数的一半又少8个_(完整版)第九讲还原问题(三年级奥数)
  9. springboot项目发布到独立的tomcat中运行
  10. USB-HDD/ZIP/HDD+/ZIP+/CDROM(量产) U盘启动模式简介
  11. Ubuntu如何简单粗暴的恢复被删除的文件
  12. Android View事件分发机制
  13. 基于thrift的匹配操作
  14. Windows10的虚拟桌面
  15. excel内容少却文件很大_(excel内容很少,文件却很大,怎么解决)excel表格数据少但是过大怎么办...
  16. (转载)有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别...
  17. 火车头采集细节(一)
  18. Windpy + Pycharm(No such file报错解决方式)
  19. joan sola_Joan Touzet在CouchDB和Apache方式上
  20. linux:redis安装、报错 oO0OoO0OoO0Oo

热门文章

  1. ssh远程登录协议和tcp wappers
  2. 【申博攻略】六.如何联系心仪的博导
  3. ROS 之 KUKA iiwa编程
  4. 论文笔记 | 中国区域文化地图:“大一统” 抑或“多元化”?
  5. 获取iPhone iPad UDID的方法
  6. 获取进程全路径方法(支持xp、win7、win10系统)
  7. Web 单点登录系统 JA-SIG CAS
  8. Bison介绍[转]
  9. 屏:全贴合工艺之GFF、OGS、Oncell、Incell
  10. 计算机图形学之组合图形的绘制(主要是渐变的实现)