Я работаю над приложением для Android с определенным требованием, чтобы элементы отображались на экране в реальных измерениях (например, «нарисовать сплошной прямоугольник 10x20 мм»).
Есть два способа, которыми мы можемвыполните следующие действия:
- Используйте
DisplayMetrics.xdpi
и DisplayMetrics.ydpi
в классе View
для вычисления размеров на основе точных физических пикселей на дюймscreen (например, val px = inches * context.resources.displayMetrics.xdpi
). - Использование реальных размеров в макете XML (например,
layout_width="20mm"
).
Однако мы знаем, что исторически некоторыеустройства неверно сообщили свои значения xdpi / ydpi , что делает эти методы ненадежными. Использование mm
в макете XML-файла отображает предупреждение в Android Studio:
Избегайте использования «мм» в качестве единиц (это не работает точно на всех устройствах): вместо этого используйте dp
У меня такой вопрос: насколько это проблема на последних устройствах Android в 2019 году?
Посту , связанному с выше , исполнилось 8 лет. ,Существует ли более актуальный набор данных для ряда современных устройств? Мы протестировали его на небольшом наборе устройств (Samsung, Google, OnePlus, Huawei, Motorola, Nokia), и он работает на всех, кроме Nexus 4 с LineageOS. Вероятно, мы можем справиться с некоторыми внешними случаями использования, которые не работают, если большинство устройств массового рынка работают должным образом.