1

私は Android アプリケーションで作業しており、ビットマップ データをクリアしたいと考えています。シナリオは、Widget(Imageview) のスクリーン キャプチャを取得し、それをビットマップに保存することです。このアクションは、ボタン クリックで行われます。しばらくすると、メモリエラーが発生します。だから私はビットマップの値をクリアしたい。そのために、次のコードを実行しました。 BitMap 変数は mCaptureImageBitmap です。

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

しかし、NullPoint 例外のエラーが発生します。私を助けてください

4

2 に答える 2

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;
}
于 2012-06-13T10:37:14.510 に答える
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 
于 2012-06-13T10:48:17.997 に答える