Ответ, принятый выше, не является полностью точным. Согласно информации, полученной при проверке исходного кода Android:
Resources.getDimension()
и getDimensionPixelOffset()
/ getDimensionPixelSize()
отличаются только тем, что первое возвращает float
, в то время как два последних возвращают одинаковое значение, округленное до int
соответственно. Для всех них возвращаемое значение в необработанных пикселях.
Все три функции реализуются путем вызова Resources.getValue()
и преобразования полученных таким образом TypedValue
путем вызова TypedValue.complexToDimension()
, TypedValue.complexToDimensionPixelOffset()
и TypedValue.complexToDimensionPixelSize()
соответственно.
Поэтому, если вы хотите получить «необработанное» значение вместе с единицей, указанной в источнике XML, вызовите Resources.getValue()
и используйте методы класса TypedValue
.