一直以为相同的dp在不同的设备上的物理尺寸是相同的,因为px=dp*(dpi/160)
后来才发现这里的dpi不是设备的真实dpi,而是一个虚拟dpi,具体怎么算的不清楚,反正就是和真实dpi相差不多的dpi
例如通过getResources().getDisplayMetrics()获取某手机的结果如下
DisplayMetrics{density=3.5, width=1440, height=2560, scaledDensity=3.5, xdpi=515.154, ydpi=516.063}
这里的density=3.5,所以android使用的dpi=160*3.5=560,而真实的x轴dpi=515.154,y轴dpi=516.063
所以在该手机上1英寸的物理大小,android绘制了560个点,而真实1英寸只要516个点,所以该手机绘制的结果偏大
后来才发现这里的dpi不是设备的真实dpi,而是一个虚拟dpi,具体怎么算的不清楚,反正就是和真实dpi相差不多的dpi
例如通过getResources().getDisplayMetrics()获取某手机的结果如下
DisplayMetrics{density=3.5, width=1440, height=2560, scaledDensity=3.5, xdpi=515.154, ydpi=516.063}
这里的density=3.5,所以android使用的dpi=160*3.5=560,而真实的x轴dpi=515.154,y轴dpi=516.063
所以在该手机上1英寸的物理大小,android绘制了560个点,而真实1英寸只要516个点,所以该手机绘制的结果偏大