我有一个尺寸为 537 * 233
的位图。这显示在我的 fragment 中。
我也在通过代码计算这个位图的高度。
我开始知道简单地使用,
image.getHeight()
将始终返回 0。
然后我发现将相同的内容放在重写方法 onGlobalLayout()
中将给出实际高度。
我做到了。看我的SO post链接。
现在我得到的高度是155。
我也试过用
BitmapDrawable bd = (BitmapDrawable) getResources().getDrawable(R.drawable.chart);
imgHeight = bd.getBitmap().getHeight();
同样,我得到的高度是 155。
根据上面的尺寸,高度应该是233
。
我在模拟器中也看到了相同的高度。
为什么差异和/或我认为是它的实际高度?
更新:
好的,我的图表在 drawable-hdpi
中,我的设备的密度是 160
。因此,当我将图表图像放在 drawable
文件夹中时,我得到了正确的高度。但是如果图表高度是固定的 (233),为什么在某些设备中我得到的图表高度足够大以覆盖我的底部时间线。虽然我知道这可能是因为近似值而不是准确值(密度、分辨率)导致了差异。但是,有什么办法可以解决这个问题吗?
最佳答案
首先你知道 mdpi = 1,hdpi = 1.5 和 xhdpi = 2。
假设您在 mdpi 文件夹中有一张宽度 = 100px 的图像。
在 mdpi 设备上,图像宽度将为 100x1 = 100px,
在 hdpi 设备上 100x1.5 = 150px,
在 xhdpi 设备上 100x2 = 200px。
如果您在 hdpi 或 xhdpi 文件夹中没有图像,android 系统将缩放它们。
因此,当您在 hdpi
文件夹中有一个图像并且您在中等密度设备 (mdpi
) 上运行该应用程序时,android 会将图像缩小 1.5。 233/1.5 = 155
。
如果将应用程序运行到 hdpi
设备,也会发生同样的情况,您将获得宽度约为 310 的图像。
因此,为了避免缩放,我建议将图像放在 drawable-nodpi
文件夹中(此文件夹中的图像不会被 android 系统缩放)。
PS:如果你把图片放在drawable
文件夹里,然后在mdpi设备上运行,图片不会缩放,因为drawable
folder = drawable-mdpi
关于android - 图片实际高度差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18588272/