Android - PX 到 DP - 布局高度错误

标签 android android-layout

我在布局文件中将布局高度设置为 64dp,并观察到计算像素高度与实际像素高度不匹配。

HDPI 设备 - 计算高度 - 96 像素,实际高度:102 像素 XXHDPI 设备 - 计算高度 - 192 像素,实际高度:204 像素

任何人都可以帮助我了解计算高度和实际高度的差异。

最佳答案

mdpihdpixhdpi 等是“广义密度”。即,dpi 组或范围。

来自 Android guide :

enter image description here

例如,两个设备的 dpi 值可以分别为 310 和 320 dpi,并且属于同一组:xhdpi

设备代码完成的计算使用精确的 dpi 值。虽然基于 dpi 组的计算假设如下:

  1. ldpi(低)~120dpi
  2. mdpi(中)~160dpi
  3. hdpi(高)~240dpi
  4. xhdpi(超高)~320dpi
  5. xxhdpi(超高)~480dpi
  6. 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/

相关文章:

android - imageView 选中状态不显示

android - 工具栏图标的圆形背景

java - 迁移到 AndroidX 后如何更新所有库?

android - 在 Debug模式下在运行时检查 Android View 层次结构?

java - 关于 Activity 回调中的@override 注解

java - 我们可以为扩展 android.app.Application 的类添加壁纸吗?

android - 想要在 android 相机中一次捕获多个图像

java - 使用相对布局和按钮将一个 videoView 覆盖在另一个 videoView 上

android - AAPT2资源失败错误

android - 在布局绑定(bind)中使用属性资源 (?attr/)?