2012-06-13 50 views
1

我正在android應用程序中工作,我想清除位圖數據。該場景是我正在拍攝一個Widget(Imageview)的屏幕截圖,並將其存儲在一個位圖中。此操作出現在按鈕單擊中。所以一段時間後,我得到一個內存錯誤。所以我想清除位圖中的值。因此,要做到這一點我做了下面的代碼: 位圖變量是mCaptureImageBitmap清除位圖數據並將其設爲空

public void ButtonClick(View v) 
    { 
       mCaptureImageBitmap.recycle(); 
       mCaptureImageBitmap=null;       
       View ve = findViewById(R.id.mainscreenGlViewRelativeLayout); 
       ve.setDrawingCacheEnabled(true); 
       mCaptureImageBitmap = ve.getDrawingCache(); 
    } 

,但我得到NullPoint異常的錯誤。請幫我

+0

其中行你得到空指針? –

回答

1

你有大部分正確的代碼,但順序錯誤。試着做這樣的事情

public void ButtonClick(View v) 
{ 
     Bitmap mCaptureImageBitmap; 
     final View ve = findViewById(R.id.mainscreenGlViewRelativeLayout); 
     ve.setDrawingCacheEnabled(true); 
     mCaptureImageBitmap = ve.getDrawingCache(); 

     // Do something useful with your image here 

     mCaptureImageBitmap.recycle(); 
     mCaptureImageBitmap = null; 
} 
1

試試這個代碼...

ve.setDrawingCacheEnabled(true); 

// Add these lines 

ve.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
ve.layout(0, 0, ve.getMeasuredWidth(), ve.getMeasuredHeight()); 
ve.buildDrawingCache(true); 

Bitmap b = Bitmap.createBitmap(ve.getDrawingCache()); 

mCaptureImageBitmap = b; 

ve.setDrawingCacheEnabled(false); // clear drawing cache 
相關問題