2012-03-09 52 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」 可能它也可以運行