我有一个 32x32 的图像,我已将其放入可绘制文件夹中,并且从服务器下载相同的图像应用程序。但下载的一个看起来更大(更像 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);
图像视图 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());