如何在资源中存储像3.1416
这样的分数值?用XML编写什么以及如何用Java代码检索它?
getFraction()
的文档指出:
This answer显示了一个简单的百分比示例,而没有详细说明参数的含义。
最佳答案
您可以这样在XML中指定分数:
<item name="fraction" type="fraction">5%</item>
<item name="parent_fraction" type="fraction">2%p</item>
实际使用时,其中5%为0.05。
然后:
// 0.05f
getResources().getFraction(R.fraction.fraction, 1, 1);
// 0.02f
getResources().getFraction(R.fraction.parent_fraction, 1, 1);
// 0.10f
getResources().getFraction(R.fraction.fraction, 2, 1);
// 0.10f
getResources().getFraction(R.fraction.fraction, 2, 2);
// 0.04f
getResources().getFraction(R.fraction.parent_fraction, 1, 2);
// 0.04f
getResources().getFraction(R.fraction.parent_fraction, 2, 2);
正如您所看到的,
getFraction
方法根据分数的类型相应地乘以值。如果指定父级分数(
%p
),它将使用第二个参数(pbase
),而忽略第一个参数。另一方面,指定普通分数时,仅使用
base
参数,并将其乘以该分数。