设计师辛辛苦苦做出设计稿,开发人员辛辛苦苦把UI调好了,但是在Android用户修改系统的默认字体大小,原先的设计很容易失效,变得非常难看,考虑你的用户人群,又不想因为用户变更默认字体大小导致app的样式走样,我们可以这么做:
1.字体使用dp/dip代替sp
dp/dip(device independent pixels):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px。不同设备有不同的显示效果,这个和设备硬件有关。
sp(Scaled Pixels):主要用于字体显示,与刻度无关的一种像素,与dp类似,但是可以根据用户的字体大小首选项进行缩放。
查看TextView的源码可以发现:
|
|
TypedValue.applyDimension()源码如下:
|
|
dp与sp的换算差别只在于metrics.density和metrics.scaledDensity,
|
|
因此,sp和dp的区别是乘以一个scale。
2.通过重写系统方法禁用
在Application重写以下方法即可
|
|
通过重写方法,把fontScale重置为默认值。此方式无侵入,仅对当前App有效。
如有转发,请注明来源!
参考:
[1]:http://blog.csdn.net/vipycm/article/details/44264199/
[2]:http://blog.csdn.net/sunshinetan/article/details/53954468/