如何在资源中存储像3.1416
这样的小数值?在XML中写什么以及如何在Java代码中检索它?
getFraction()
州的文档:
public float getFraction (int id, int base, int pbase)
检索特定资源ID的小数单位。
参数
base
此分数的基值。换句话说,一个标准 分数乘以该值pbase
父基值 这一部分。换句话说,乘以父级分(nn%p) 通过这个值。返回
属性小数值乘以 适当的基值
This answer显示了百分比的简单示例,但未详细说明参数的含义。
答案 0 :(得分:38)
您可以在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
参数,将分数乘以此。