I have a Bitmap
with a size of 320x480
and I need to stretch it on different device screens, I tried using this:
Rect dstRect = new Rect();
canvas.getClipBounds(dstRect);
canvas.drawBitmap(frameBuffer, null, dstRect, null);
it works, the image fills the whole screen like I wanted but the image is pixelated and it looks bad. Then I tried :
float scaleWidth = (float) newWidth / width;
float scaleHeight = (float) newHeight / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(frameBuffer, 0, 0,
width, height, matrix, true);
canvas.drawBitmap(resizedBitmap, 0, 0, null);
this time it looks perfect, nice and smooth, but this code has to be in my main game loop and creating Bitmap
s every iteration makes it very slow. How can I resize my image so it doesn't get pixelated and gets done fast?
FOUND THE SOLUTION:
Paint paint = new Paint();
paint.setFilterBitmap();
canvas.drawBitmap(bitmap, matrix, paint);