res/values
下的<resource>
中,支持两种方式指定浮点数资源:
<dimen>标签
<dimen>
资源一般用于记录带单位的UI尺寸,例如:
<dimen name="fontSize">18sp</dimen>
<dimen name="btnWidth">5.5dp</dimen>
<dimen name="imageHeight">10px</dimen>
<dimen>支持以下6种常用单位:
- sp(scale-independent pixels)
- dp(density-independent pixels)
- px(pixels 像素)
- in (inches)
- mm (millimeters)
- pt (points at 72 DPI)
记录无单位数值的方法
<item name="ui_float" type="dimen" format="float">1.2</item>
<item name="ui_int" type="dimen" format="integer">5</item>
代码获取:
TypedValue outValue = new TypedValue();
getResources().getValue(R.dimen.ui_float, outValue, true);
float value = outValue.getFloat();
不能通过 getResources().getDimension(id) 方式读取<item>
定义的 dimen 数值,会导致运行时异常 NotFoundException
<fraction>标签
<fraction>
用于记录百分比数字资源,支持两种形态的百分比声明:
100% 表示相对于对象自身的百分比
100%p 表示相对于父容器的百分比,percent of parent
<fraction name="myWidthPercent">50%</fraction>
以 <item> 方式定义:
<item name="fraction" type="fraction">5%</item>
<item name="parent_fraction" type="fraction">2%p</item>
引用:
@fraction/myWidthPercent
代码获取:
getResources().getFraction(R.fraction.fraction, base, pbase);
TypedValue outValue = new TypedValue();
getResources().getValue(R.dimen.ui_float, outValue, true);
float value = outValue.getFraction(base, pbase);
base 表示百分比资源的基值,返回结果为 nn% * base 的结果值
pbase 表示 %p 形态百分比资源的基值,返回结果为 nn%p * pbase 的结果值