我在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等于实际宽度?
也许是密度?
答案 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);