2012-03-09 9 views
1

72x72ピクセルの外部ストレージから画像を表示したいと思います。 私のデバイスは高密度です。 イメージビューの高さと幅は "wrap_content"です。Android上の外部ストレージから読み込むときの画像サイズの問題

イメージをロードするかURLを使用すると、結果が異なります。

このようなURLを使用すると、結果は約48x48pxになります。

  imageView.setImageURI(Uri.fromFile(file)); 

私はビットマップをロードする場合、期待どおりの結果が72x72 pxのである:

  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

+0

できます!申し訳ありませんが、私はいつも編集するのも怖いです。 :) –

+1

違いは 'imageView.setImageURI()'によって 'BitmapFactory.Options.inScreenDensity'が' DisplayMetrics.DENSITY_DEVICE'に設定されています。これは異なるスケーリングを引き起こします。 – zapl

答えて

0

両方の画像のサイズが異なり、画像のサイズを変更できない場合は、xmlに画像の幅と高さ(例:72dp)を設定する必要があります。あなたはpxを使うべきではありませんが、dpを使うべきではありません。私は、それはどちらか

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

またはJavaコードのいずれかでの使用が

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

によって ImageViewの中xmlファイル内のいずれかの変化を働く "centercrop" または "fitxy" を使用と思います。このことにより、

1

試してみることそれも動作します

関連する問題