2012-03-09 54 views
1

我想显示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); 

你可以看到结果这里: screenshot

它会更好,如果我可以使用setImageURI而不是预加载 图像,我也想在appwidgets中显示图像。 你能告诉我是什么原因引起的差异,我该如何避免它?

+0

@Waynn:你已经拥有[内嵌图片的权限](http://stackoverflow.com/privileges/new-user),请在将来的编辑中这样做。 :) – sarnold 2012-03-09 11:22:21

+0

可以做!对不起,我总是害怕编辑*太多*。 :) – 2012-03-09 11:25:08

+1

不同之处在于'imageView.setImageURI()'将'BitmapFactory.Options.inScreenDensity'设置为'DisplayMetrics.DENSITY_DEVICE'。这会导致不同的缩放比例。 – zapl 2012-03-09 11:26:17

回答

0

如果两幅图像的大小不同,并且无法更改图像大小,则必须在xml中将图像宽度和高度设置为例如72dp。你不应该使用px,而是dp,否则它不会在不同的手机上显示效果。

1

试图通过这一点,我觉得它的工作 通过

android:scaleType="centerCrop" 
android:adjustViewBounds="true" 

在imageview的XML文件,要么改变或Java代码要么使用

image.setAdjustViewBounds(true); 
image.setScaleType(ScaleType.CENTER_CROP); 

要么使用 “centercrop” 或 “fitxy” 可能它也可以运行