Xamarin Forms Androidでビットマップを使用しているときに、通常のサイズよりも大きな画像を読み込む際にメモリエラーが発生します。Xamarin Forms Androidでビットマップを使用中にメモリリークが発生する
void getImage(){------- imageView.setImageBitmap(Bitmap.createScaledBitmap(getBitmapFromViewUpdated(_view)、(int)width、(int)height、true)); tempView = imageView; } -------- } パブリック静的ビットマップgetBitmapFromView(最終的なビュービュー){
view.setLayoutParams(new LayoutParams(view.getWidth(),
view.getHeight()));
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
final Bitmap bitmap_ = Bitmap
.createBitmap(view.getMeasuredWidth(),
view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bitmap_);
view.draw(c);
return bitmap_;
}
Bitmap getBitmapFromViewUpdated(final View view) {
if (view.getWidth() == 0 || view.getHeight() == 0)
view.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
else
view.setLayoutParams(new LayoutParams(view.getWidth(),
view.getHeight()));
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, viewWidth, viewHeight);
final Bitmap bitmap_;
if(viewWidth>0 && viewHeight>0) {
bitmap_ = Bitmap
.createBitmap(viewWidth,
viewHeight, Bitmap.Config.ARGB_8888);
}
else
{
bitmap_= Bitmap
.createBitmap(view.getMeasuredWidth(),
view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
}
Canvas c = new Canvas(bitmap_);
view.draw(c);
return bitmap_;
}
}
私はアンドロイド試みた:それを使用しながらlargeHeap = TRUEは、結果を達成することができると私は必要ビットマップのリサイズを修正する方法を知っている。
事前のおかげで...
このリンクをチェックしましたが、サイズ変更されたビューを表示する方法が必要でした。 – Rabhia
実際にビットマップを与えると、ビットマップ自体が圧縮され、サイズが変更されます。第2リンクを確認してください。シナリオ自体を実装してみてください@Rabhia –