我在布局文件中将布局高度设置为 64dp,并观察到计算像素高度与实际像素高度不匹配。
HDPI 设备 - 计算高度 - 96 像素,实际高度:102 像素 XXHDPI 设备 - 计算高度 - 192 像素,实际高度:204 像素
任何人都可以帮助我了解计算高度和实际高度的差异。
最佳答案
mdpi
、hdpi
、xhdpi
等是“广义密度”。即,dpi 组或范围。
来自 Android guide :
例如,两个设备的 dpi 值可以分别为 310 和 320 dpi,并且属于同一组:xhdpi
。
设备代码完成的计算使用精确的 dpi 值。虽然基于 dpi 组的计算假设如下:
- ldpi(低)~120dpi
- mdpi(中)~160dpi
- hdpi(高)~240dpi
- xhdpi(超高)~320dpi
- xxhdpi(超高)~480dpi
- xxxhdpi(超高超高)~640dpi
更新:
以下代码:
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
关于Android - PX 到 DP - 布局高度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29540499/