Ответ
Плотность экрана (density) — это количество пикселей на физическую единицу площади (обычно dpi — dots per inch). В Android используется понятие логической плотности (density-independent pixel, dp), чтобы UI выглядел одинаково на устройствах с разной плотностью экрана.
Основные плотности в Android:
- ldpi (~120dpi)
- mdpi (~160dpi) — базовая плотность (1dp = 1px)
- hdpi (~240dpi)
- xhdpi (~320dpi)
- xxhdpi (~480dpi)
- xxxhdpi (~640dpi)
Пример конвертации dp в px:
val dp = 16f
val px = dp * resources.displayMetrics.density
Важно: всегда используйте dp для размеров и sp для текста, чтобы обеспечить корректное отображение на разных устройствах.
Ответ 18+ 🔞
Давай разберёмся с этой ебушкой-воробушкой под названием плотность экрана. Ну, в общем, чтобы твой интерфейс не превращался в пиздапроебибну на разных телефонах, придумали такую штуку.
Смотри, есть физическая плотность — сколько этих пикселей на дюйм напихано. Это dpi. А есть логическая плотность — dp. Это, блядь, как бы абстрактная единица, чтобы отвязаться от реальных пикселей. На базовой плотности (mdpi, 160 dpi) один dp равен одному пикселю. А на других — хуй с горы, система сама пересчитает.
Вот основные категории, чтобы ты не охуел, когда будешь картинки готовить:
- ldpi (~120dpi) — для древних девайсов, которые уже в музее пылятся.
- mdpi (~160dpi) — базовая, точка отсчёта. 1dp = 1px.
- hdpi (~240dpi)
- xhdpi (~320dpi)
- xxhdpi (~480dpi) — сейчас в основном такое.
- xxxhdpi (~640dpi) — для самых навороченных, где овердохуища пикселей.
Если тебе в коде надо из dp в px перевести, вот тебе волшебная формула, ёпта:
val dp = 16f
val px = dp * resources.displayMetrics.density
Но самое главное правило, которое надо вбить себе в башку, чтобы не было потом удивления пиздец: ВСЕГДА используй dp для размеров (отступы, ширина кнопок) и sp для размера текста. sp — это такие же dp, но ещё и с учётом настроек размера шрифта у пользователя в системе. Если будешь пиксели тыкать, получится мартышлюшка — на одном телефоне кнопка с ноготь, а на другом — на полэкрана. Доверия к такому разработчику — ноль ебать.