Как использовать Resource.getFraction()?

Как сохранить дробное значение, например 3.1416 в ресурсах? Что писать в XML и как его получить в Java-коде?

В документации для getFraction() указано:

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

Получить дробную единицу для определенного идентификатора ресурса.

Параметры
base Базовое значение этой фракции. Другими словами, стандартный доля умножается на это значение.
pbase Исходное базовое значение эта доля. Другими словами, родительская доля (nn% p) умножается по этому значению.

Возвращает
Дробное значение атрибута, умноженное на соответствующее базовое значение

Этот ответ показывает простой пример процентов, не вдаваясь в подробности того, что означают аргументы.

Ответ 1

Вы указываете фракции в 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, умножая эту долю на это.