Какая разница между физической плотностью и физической плотностью устройства?
Я создал функцию для расчета размера экрана по диагонали на основе разрешения и плотности пикселей. viz-
def find_display_size(d):
width=float(720);
height=float(1280);
dens=float(294);
wi=float(width)/(dens);
hi=float(height)/(dens);
x = math.pow(wi,2);
y = math.pow(hi,2);
screenInches = math.sqrt(x+y);
diagScreenSizeRoundedoff = round(screenInches)
logger.info("screenInches "+str(screenInches),also_console=True)
logger.info("diagScreenSizeRoundedoff"+str(diagScreenSizeRoundedoff),also_console=True)
Я хочу получить информацию (разрешение и плотность пикселей), используя оболочку adb. Когда я пытаюсь эту команду-
$adb shell wm density
Result-
Physical density: 320
В результате я получаю физическую плотность устройства (=320), однако плотность пикселей конкретного устройства составляет (~294). Любопытно узнать, в чем именно разница между этими двумя, а также как я могу найти плотность пикселей с помощью команд adb, которая в данном случае составляет ~ 294.
PS - устройство, над которым я работаю, - MOTO XT1068
1 ответ
Android подгоняет ваше устройство к одной из групп mdpi, hdpi, xhdpi и т. Д. С фиксированной плотностью. например, устройства с разрешением 290-340 точек на дюйм будут использовать значение 320, xxhdpi будет 480, только mdpi 160. Эта плотность используется для выборки данных из ресурсов (измерения, для расчета рисунков XML, изменения размера рисования, когда оно находится только в папке xxhdpi, но устройство и.т.д.) Больше плотности и про тему в ЗДЕСЬ
Плотность экрана
Количество пикселей в физической области экрана; обычно называется dpi (точек на дюйм). Например, экран "низкой" плотности имеет меньше пикселей в данной физической области по сравнению с экраном "нормальной" или "высокой" плотности.
Для простоты Android группирует все фактические плотности экрана в шесть обобщенных плотностей: низкая, средняя, высокая, сверхвысокая, сверхвысокая и сверхвысокая сверхвысокая.