图像实际高度差异

问题描述 投票:0回答:2

我有一个尺寸为

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),为什么在某些设备中我的图表高度足够大以重叠我的底部时间线。尽管我知道一点,这可能是因为近似值而不是准确值(密度、分辨率)导致了差异。但是,有什么想法可以解决这个问题吗?

android android-emulator bitmapimage
2个回答
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


0
投票

最后一个答案很有帮助。

First you know mdpi = 1, hdpi = 1.5 and xhdpi = 2.
Lets say you have an image in mdpi folder with width = 100px.
On mdpi device the image width will be 100x1 = 100px,
On hdpi device 100x1.5 = 150px,
On xhdpi device 100x2 = 200px.

© www.soinside.com 2019 - 2024. All rights reserved.