I am rotating a bitmap this way, on every button click the image rotates 90 degrees
Matrix matrix = new Matrix();
matrix.postRotate(90);
rotated = Bitmap.createBitmap(rotated, 0, 0,
rotated.getWidth(), rotated.getHeight(), matrix, true);
iv.setImageBitmap(rotated);
I tried this with a lot of images, but now one caused an OutOfMemoryError. Is there a way to prevent this? Of course I can call recycle, but then I lose the bitmap and have to get it again from the imageview. I don't think that will make any difference.
Try Like Below:
I have suggestions for you.
1) When you have any memory hunger task, use in methods and if possible with
AsyncTask
.2) Declare objects as
WeakReference
. This will give you chance to release memory after use. See below example.This task has all the views and object as
WeakReference
. When this task is completed, all the memory used by this Task is free. Try this approach. I used in my application.If you need to just view the images, you can set a rotate drawable as shown here
If you care about real rotation of the bitmap, and you also want to avoid OOM, check this link