Как использовать Resources.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
аргумент используется, умножая дробь на это.