10

I have a PNG file that I want to use for an overlay - however, this file has to be mirrored (and rotated by 180°), but in order to save space, I don't want to place the mirrored file in the apk, but do this action programmatically.

How can I do this with Froyo and above?

Force
  • 6,312
  • 7
  • 54
  • 85

2 Answers2

18

Scaling by -1.0 causes the image to be flipped. Assuming bmp is the bitmap you want to mirror (here on the x axis) you can do :

Matrix matrix = new Matrix(); 
matrix.preScale(-1.0f, 1.0f); 
Bitmap mirroredBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.width(), bmp.height(), matrix, false);

If you don't want to create a second bitmap, you can do the same with canvas.scale :

canvas.save();
canvas.scale(-1.0f, 1.0f);
canvas.drawBitmap(bitmap, ...); // The bitmap is flipped
canvas.restore();
Dalmas
  • 26,409
  • 9
  • 67
  • 80
7

You can simply use View.setScaleX()

For example

 public void mirrorView(View v){
    v.setScaleX(-1.0f);
}
Gal Rom
  • 6,221
  • 3
  • 41
  • 33