1

我有一个尺寸为537 * 233. 这显示在我的片段中。

我也在通过代码计算这个位图的高度。

我开始知道,只需使用,

image.getHeight()将始终返回 0。

然后我发现将相同的方法放在覆盖的方法中onGlobalLayout()会给出实际的高度。

我这样做了。请参阅我的SO 帖子以获取链接。

现在我得到的高度是155

我也试过用,

BitmapDrawable bd = (BitmapDrawable) getResources().getDrawable(R.drawable.chart);

imgHeight = bd.getBitmap().getHeight();

我再次得到的高度是155

根据上述尺寸,高度应为233

我在模拟器中也看到了相同的高度。

为什么差异和/或我认为是它的实际高度?

更新:

好的,我的图表在里面drawable-hdpi,我的设备的密度是160. 因此,当我将图表图像放入drawable文件夹时,我得到了正确的高度。但是,如果图表高度是固定的(233),为什么在某些设备中我的图表高度足够大以与我的底部时间线重叠。虽然我知道这可能是因为近似值而不是准确的值(密度、分辨率)导致了差异。但是,任何想法如何解决这个问题?

4

1 回答 1

1

首先你知道 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文件夹 =drawable-mdpi

于 2013-09-03T10:15:00.027 回答