1
我有一個32x32的圖像,我把它放在可繪製的文件夾中,並從服務器下載相同的圖像應用程序。但下載一個看起來更大(更像48x48)和像素化。Drawable.createFromStream和getResources()。getDrawable,爲什麼他們的輸出是不同的?
服務器代碼(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" />
編輯:
最後,設置TargetDensity的BitmapDrawable工作!
Bitmap bmp = BitmapFactory.decodeByteArray(imageData, 0,
imageData.length);
BitmapDrawable image = new BitmapDrawable(bmp);
image.setTargetDensity(bmp.getDensity());
同樣的結果 繪製的圖像=新BitmapDrawable( \t \t \t \t BitmapFactory.decodeStream(memStream)); – xmen
最後,設置BitmapDrawable的TargetDensity工作! – xmen