私は 32x32 の画像を持っています。これを drawable フォルダーに入れ、同じ画像アプリケーションをサーバーからダウンロードします。しかし、ダウンロードしたものはより大きく (48x48 のように) 見え、ピクセル化されています。
サーバー コード (C#)
MemoryStream tms = new MemoryStream();
image.Save(tms, System.Drawing.Imaging.ImageFormat.Png);
byte[] imageData = tms.ToArray();
//send data to phone
アプリケーション コード (Java)
ByteArrayInputStream memStream = new ByteArrayInputStream(imageData);
Drawable image = Drawable.createFromStream(memStream, ""); //big image and pixelated
memStream.close();
ただし、リソースから同じファイルをロードすると、常に小さくなります
Drawable image = getResources().getDrawable(R.drawable.image);
ImageView xml
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:focusable="false"
android:scaleType="center" />
編集 :
最後に、BitmapDrawable の TargetDensity の設定が機能しました。
Bitmap bmp = BitmapFactory.decodeByteArray(imageData, 0,
imageData.length);
BitmapDrawable image = new BitmapDrawable(bmp);
image.setTargetDensity(bmp.getDensity());