计算可绘制宽度

时间:2014-06-05 08:50:12

标签: android

我在hdpi文件夹中只有Drawable (并且不能在其他文件夹中)。

在我的自定义视图中,我想在ImageView中计算onMeasure()宽度。

代码是:

myImage.getDrawable().getIntrinsicWidth();

但是,依赖于设备,IntrinsicWidth不同于实际宽度并且不是真正的宽度。

此代码:

Log.e(TAG, "icon width="+myImage.getWidth()+" // intrinsic width="+myImage.getDrawable().getIntrinsicWidth());

打印这些结果:

  • On Nexus 4:180 // 187

  • 关于华硕变形金刚:320 // 187

  • 在Samsung S4:270 // 280

那么,有没有办法让IntrinsicWidth等于实际宽度?

也许是密度?

1 个答案:

答案 0 :(得分:2)

当您的图片位于hdpi文件夹中时,Android会根据设备密度对其进行缩放(向上或向下), 将您的图片放入nodpi文件夹(drawable-nodpi),以便Android以原始尺寸加载图片。

<强>更新
通过了解 0.75 - ldpi
1.0 - mdpi
1.5 - hdpi
2.0 - xhdpi
3.0 - xxhdpi
4.0 - xxxhdpi

您知道hdpi文件夹中的图片,因此其大于mdpi的1.5。

final float deviceDensity = getResources().getDisplayMetrics().density;
int originalwidth = (int)((myImage.getWidth() * 1.5) / deviceDensity);