11

こんにちは、という名前のpng画像からビットマップを作成していますimage.png。画像の寸法は 75 (幅) x 92 (高さ) です。このコードを実行すると:

Bitmap bitmap = BitmapFactory.decodeResource(this.context.getResources(),  R.drawable.image
Log.d("image", "height: " + bitmap.getHeight() + " width: " + bitmap.getWidth());

ロガーのログ:

DEBUG/image(3550): height: 138 width: 113

画面上の画像は、寸法が 75 x 92 の他の画像よりも大きいです。Android に正しい寸法の画像をロードさせるにはどうすればよいですか?

4

4 に答える 4

28

私の解決策:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;               
Bitmap bitmap = BitmapFactory.decodeResource(this.context.getResources(),  R.drawable.image, options );
于 2012-11-29T08:39:55.697 に答える
12

お使いのデバイスの画面密度は、image.png が作成されたときの密度とは異なるようです。

スケーリングを本当に防ぎたい場合は、次のいずれかを試すことができます。

  1. 画像を res/drawable-nodpi に配置します ( http://developer.android.com/guide/practices/screens_support.html#qualifiers )

  2. ImageView.ScaleType.CENTER ( http://developer.android.com/reference/android/widget/ImageView.ScaleType.html )を使用します。

  3. SO でこの関連する質問を見つけました: Android: Android 1.6+ による画像のスケーリングを停止する方法

于 2011-09-09T15:19:18.963 に答える
4

BitmapFactory の Beause ローダーは、読み込み中に画面密度のスケーリングを適用します。これをオーバーライドするには、decodeResource の呼び出しで BitmapFactory.Options に独自の目的の inTargetDensity を指定します。

于 2011-09-09T15:19:33.103 に答える