1

私は 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());
4

1 に答える 1

0

デバイスのピクセル密度に応じて画像が再スケーリングされます。Drawable オブジェクトが必要な場合は、使用BitmapFactory.decodeStream(...)してラップしてください。new BitmapDrawable(Bitmap)

于 2012-05-15T01:55:26.263 に答える