android - 图片实际高度差

标签 android android-emulator bitmapimage

我有一个尺寸为 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/

相关文章:

android - 适用于 Android Oreo 的基于 ARM 的模拟器

android - 如何在ImageView中显示位图后获取位图的大小

wpf - 从 URL 同步下载图像

java - SharedPreferences 使程序崩溃

android - 如何更改 fragment 上的 map View ?

android - 后退键按钮在三星手机上不起作用

WPF - 在 DataTemplate 中使用 CroppedBitmap

android - 如何将 Android 模拟器连接到本地主机服务器?

android - 使用 React-Native 在 Android 模拟器上的位置请求超时

android - 如何将数组添加到 ListView