从Android上的外部存储加载时发生图像大小问题
问题描述:
我想显示72x72像素的外部存储图像。 我的设备密度很高。 图像视图的高度和宽度是“wrap_content”。从Android上的外部存储加载时发生图像大小问题
如果我加载图片或使用URL,我会得到不同的结果。
如果我使用这样的URL,那么结果将是大约48x48px。
imageView.setImageURI(Uri.fromFile(file));
如果我加载位图的结果如预期72x72像素:
InputStream is = context.getContentResolver().openInputStream(Uri.fromFile(file));
Bitmap b = BitmapFactory.decodeStream(is, null, null);
is.close();
iv2.setImageBitmap(b);
你可以看到结果这里:
它会更好,如果我可以使用setImageURI
而不是预加载 图像,我也想在appwidgets中显示图像。 你能告诉我是什么原因引起的差异,我该如何避免它?
答
如果两幅图像的大小不同,并且无法更改图像大小,则必须在xml中将图像宽度和高度设置为例如72dp。你不应该使用px,而是dp,否则它不会在不同的手机上显示效果。
答
试图通过这一点,我觉得它的工作 通过
android:scaleType="centerCrop"
android:adjustViewBounds="true"
在imageview的XML文件,要么改变或Java代码要么使用
image.setAdjustViewBounds(true);
image.setScaleType(ScaleType.CENTER_CROP);
要么使用 “centercrop” 或 “fitxy” 可能它也可以运行
@Waynn:你已经拥有[内嵌图片的权限](http://stackoverflow.com/privileges/new-user),请在将来的编辑中这样做。 :) – sarnold 2012-03-09 11:22:21
可以做!对不起,我总是害怕编辑*太多*。 :) – 2012-03-09 11:25:08
不同之处在于'imageView.setImageURI()'将'BitmapFactory.Options.inScreenDensity'设置为'DisplayMetrics.DENSITY_DEVICE'。这会导致不同的缩放比例。 – zapl 2012-03-09 11:26:17