Меня немного смущает преобразование dp в px и px в dp. Формула идет следующим образом
px = dp*(dpi/160)
Рассмотрим два экрана A и B плотностью 160 и 320 точек на дюйм соответственно. Это само по себе означает, что в одной и той же области B имеет большее количество пикселей, чем A, что означает, что размер пикселя экрана с разрешением 160 точек на дюйм должен быть больше для того же размера экрана и должен быть равен физическому размеру 2 пикселей экрана с разрешением 320 точек на дюйм. Но если подставить формулу для B, то получится, что 1 пиксель для B эквивалентен физическому размеру 2 пикселей, независимых от плотности, или 2 пикселей экрана с разрешением 160 точек на дюйм. Что мне здесь не хватает?
Возможный дубликат Преобразование пикселей в dp
Проверьте мой ответ ниже :)
Попытайтесь понять систему масштабирования на этом примере. Представьте, что у вас есть растровое изображение, которое вы хотите отобразить на каждом экране большим размером 48dp x 48dp (независимо от плотности). У нас есть:
Вкратце, чтобы ответить на ваш вопрос, у вас есть разное количество пиксели для разной плотности, но такое же количество дпс.
1 dp на A = 1 * (160/160) = 1px. 1dp на B = 1 * (320/160) = 2px. Таким образом, каждый dp на экране A займет 1 пиксель, а 1 dp на экране B займет 2 пикселя. Хотя оба они будут иметь одинаковый размер в миллиметрах на обоих экранах