我在布局文件中给出了64dp的布局高度,并观察到计算和实际像素高度的不匹配。
HDPI设备 - 计算高度 - 96像素,实际高度:102像素 XXHDPI设备 - 计算高度 - 192像素,实际高度:204像素
任何人都可以帮助我理解计算和实际身高的差异。
答案 0 :(得分:2)
mdpi
,hdpi
,xhdpi
等是“广义密度”。也就是说,dpi组或范围。
例如,两个设备的dpi值分别为310和320 dpi,并且属于同一组:xhdpi
。
设备代码完成的计算使用精确的dpi值。虽然基于dpi组的计算假设如下:
<强>更新强>
以下代码:
int widthDp = 160;
Log.i("TEST", "Actual DPI: " + getResources().getDisplayMetrics().xdpi);
float widthDevice = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,widthDp,getResources().getDisplayMetrics());
Log.i("TEST", widthDp + " dip in pixels on device: " + widthDevice);
在两个hdpi
设备上运行时:
213 DPI设备:
2164-2164/com.example.android.dpitest I/TEST﹕ Actual DPI: 213.0
2164-2164/com.example.android.dpitest I/TEST﹕ 160 dip in pixels on device: 213.0
240 DPI设备:
2852-2852/com.example.android.dpitest I/TEST﹕ Actual DPI: 240.0
2852-2852/com.example.android.dpitest I/TEST﹕ 160 dip in pixels on device: 240.0