设备的物理密度和物理密度之间到底有什么区别?

What exactly is the difference between physical density and physical density of a device?

我创建了一个函数来根据分辨率和像素密度计算对角线屏幕尺寸。即-

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 shell 获取信息(分辨率和像素密度)。 当我尝试这个命令时-

$adb shell wm density

Result-
Physical density: 320

我得到的结果是设备的物理密度 (=320),但是特定设备的像素密度是 (~294)。很想知道这两者之间到底有什么区别,以及我如何使用 adb 命令找到像素密度,在这种情况下为 ~294。

PS- 我正在使用的设备是- MOTO XT1068

Android 正在使您的设备适合具有固定密度设置的组 mdpi、hdpi、xhdpi 等之一。例如290-340 dpi 的设备将使用 320 值,xxhdpi 将为 480,mdpi 仅为 160。此密度用于从资源中获取数据(尺寸,用于计算 xml 可绘制对象,仅在 mhdpi 文件夹中调整可绘制对象的大小,但设备是 xxdpi 等)更多密度和关于 HERE

中的主题

Screen density

The quantity of pixels within a physical area of the screen; usually referred to as dpi (dots per inch). For example, a "low" density screen has fewer pixels within a given physical area, compared to a "normal" or "high" density screen.

For simplicity, Android groups all actual screen densities into six generalized densities: low, medium, high, extra-high, extra-extra-high, and extra-extra-extra-high.