How can I get the bitmap of the canvas I get in onDraw?
While there is no getBitmap()
function for a canvas, since you are making a custom view, what you can do instead is write a function like this inside your view class.
public Bitmap get(){
return this.getDrawingCache();
}
This returns the Bitmap of the view, but it is important that in all your constructors you add this,
this.setDrawingCacheEnabled(true);
Otherwise getDrawingCache
will return null
There is no way to extract the Bitmap
out of a Canvas
. The only way you can access it is to pass it yourself when creating the canvas like this new Canvas(myBitmap)
and keep the reference.
EDIT2: see @Alex comment blow - the approach of passing a Bitmap
to the Canvas
does not seem to work for more recent versions of Android.
EDIT : If you don't create the Canvas
yourself, you could create a screen-sized Bitmap
(or whatever size you need) and then pass it to the Canvas
in onDraw
calls like this: canvas.setBitmap(myBitmap)
.
I found out that Canvas has a setBitmap function, but not a getBitmap one. It's strange, but anyway, it enables me to create the bitmap myself and pass it to the canvas, retaining the reference.