我在高密度屏幕(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
答案 0 :(得分:1)
尝试向其添加比例类型
mImage.setScaleType(ScaleType.FIT_XY);
有很多可用的缩放类型。检查哪一个适合你。
答案 1 :(得分:0)
这是一个老问题,但我认为有一种更简单的方法可以做到这一点。似乎当您从外部源(不在/res
文件夹中)加载位图时,Android框架会将其视为基线设备(即mdpi)。因此,它在320x480 mdpi的屏幕上看起来很棒,但在hdpi屏幕上却没有那么多。
现在系统通常应该在hdpi屏幕上按比例缩放1.5倍(除非您认为在位图对象中设置了密度,但我真的不知道它是如何工作的)但是因为您使用了该方法setImageBitmap()
位图未缩放,导致您的问题。
据说如果你使用方法setImageDrawable()
并将位图包装在Drawable
中,位图就会像你想要的那样自动缩放。
我没有试过这个,但显然this guy遇到了与你相反的问题。