文件中的位图图像无法在高密度设备上缩放

时间:2010-09-24 10:43:53

标签: android bitmap

我在高密度屏幕(480x800)上的imageview上显示位图图像时遇到问题。当从SD卡上的文件加载位图图像时,图像不会缩放以适合hdpi屏幕。在中密度屏幕上,它正常工作(320x480)。

public static Bitmap getBitmapFromFile(String src) {
    File file = new File(src);

    if (file.exists()) {
        return BitmapFactory.decodeFile(src);
    }

    return null; 
} 

mImage.setImageBitmap(Util.getBitmapFromFile(filePath));

hdpi&屏幕截图MDPI http://202.148.2.34/~lorenz/iview.jpg

2 个答案:

答案 0 :(得分:1)

尝试向其添加比例类型

mImage.setScaleType(ScaleType.FIT_XY);

有很多可用的缩放类型。检查哪一个适合你。

答案 1 :(得分:0)

这是一个老问题,但我认为有一种更简单的方法可以做到这一点。似乎当您从外部源(不在/res文件夹中)加载位图时,Android框架会将其视为基线设备(即mdpi)。因此,它在320x480 mdpi的屏幕上看起来很棒,但在hdpi屏幕上却没有那么多。

现在系统通常应该在hdpi屏幕上按比例缩放1.5倍(除非您认为在位图对象中设置了密度,但我真的不知道它是如何工作的)但是因为您使用了该方法setImageBitmap()位图未缩放,导致您的问题。

据说如果你使用方法setImageDrawable()并将位图包装在Drawable中,位图就会像你想要的那样自动缩放。

我没有试过这个,但显然this guy遇到了与你相反的问题。