按维度值自动缩放文本大小

Automatic text size scaling by dimension's value

我有一组维度文件,例如:

\res\values-normal-xxhdpi\dimens.xml

<!-- Default screen margins, per the Android Design guidelines. -->
<string name="dimention_id">normal-xxhdpi</string>
<dimen name="activity_margin">8dp</dimen>
<dimen name="big_text_size">8sp</dimen> 
<dimen name="mid_text_size">5sp</dimen> 
<dimen name="small_text_size">3sp</dimen>
<dimen name="logo_size">100dp</dimen>
<dimen name="button_height">55dp</dimen>
<dimen name="button_width">200dp</dimen>
<dimen name="panel_counter_width">190dp</dimen>

当我通过 Context.getResources().getDimension(R.dimen.mid_text_size) 加载此尺寸时,我收到 "mid_text_size" 等于 20。

我确定这是正确的文件,因为将值 5 更改为其他值会在应用程序中出现更改。

为什么它从 5 个扩展到 20 个?

函数 Resources.getDimenstion(int) 的文档指出:

Resource dimension value multiplied by the appropriate metric.

所以很可能,如果您检查 DisplayMetrics.scaledDensity,它会显示值 4。

请记住,sp 是一个相对值,可以确保该字体在所有屏幕尺寸、尺寸和分辨率上看起来都非常相似。

我建议你阅读units used in Android environment

的理论