如何使用Resources.getFraction()?

时间:2012-07-31 06:39:19

标签: android android-resources

如何在资源中存储像3.1416这样的小数值?在XML中写什么以及如何在Java代码中检索它?

getFraction()州的文档:

  

public float getFraction (int id, int base, int pbase)

     

检索特定资源ID的小数单位。

     

参数
  base此分数的基值。换句话说,一个标准   分数乘以该值   pbase父基值   这一部分。换句话说,乘以父级分(nn%p)   通过这个值。

     

返回
  属性小数值乘以   适当的基值

This answer显示了百分比的简单示例,但未详细说明参数的含义。

1 个答案:

答案 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参数,将分数乘以此。