0
我遇到問題。我有一個帖子繪製偵聽器,我繪製了一個縮放版本的位圖。問題源於這樣一個事實,即每次發生縮放時我傾向於進行一些縮放(放大放大,縮小縮小)。問題是我不能夠循環利用的位圖,因爲當我試着畫後這樣做Bitmap.recycle()繪圖後調用它
canvas.draw(scaledbitmap,0,0,null);
scaledBitmap.recycle()
我得到的帆布canot抽籤回收位例外
有誰知道我怎麼會去再造一個位圖完成後,以便可以縮放另一個位置,並且不會發生OutOfMemoryException崩潰。
一些代碼來告訴你我究竟是如何使用它:
private SpenDrawListener mPosteDrawListener = new SpenDrawListener() {
@Override
public void onDraw(Canvas canvas, float x, float y, float ratio,
float frameStartX, float frameStartY, RectF updateRect) {
if(mLineDrawingBitmap == null)
mLineDrawingBitmap = loadLineDrawingBitmap(mLineDrawingFileName);
Bitmap bm = Bitmap.createScaledBitmap(mLineDrawingBitmap, (int)(mLineDrawingBitmap.getWidth() * ratio), (int)(mLineDrawingBitmap.getHeight() * ratio), true);
/*
float pointX = (mScreenRect.width() - bm.getWidth())/2;
float pointY = mScreenRect.height()/2 - bm.getHeight();
*/
float pointX = frameStartX - (x * ratio);
float pointY = frameStartY - (y * ratio);
//canvas.drawBitmap(bm, 0, 0,null);
canvas.drawBitmap(bm, pointX, pointY, null);
//bm.recycle();
}
};