我有一个尺寸为537 * 233
的位图。这显示在我的片段中。
我也在通过代码计算这个位图的高度。
我开始知道只是使用,
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),为什么在某些设备中我得到的图表高度足够大以重叠我的底部时间轴。虽然我知道这可能是因为近似值而不是导致差异的准确值(密度,分辨率)。但那么,任何想法如何解决?
答案 0 :(得分: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
folder = drawable-mdpi