如何在android中水平切换flip Imageview

如何在android中水平切换flip Imageview,android,imageview,flip,Android,Imageview,Flip,我有一个Imageview,每当用户单击名为“翻转图片”的按钮时,我都希望水平翻转图片。当用户第二次点击这个按钮时,它应该返回到原始状态,换句话说,返回 所以它应该重复这种行为。我发现这段代码非常有用,可以在不使用外部库的情况下翻转图像视图,但不知道如何翻转: 代码如下: public Bitmap flipImage(Bitmap src, int type) { // create new matrix for transformation Matrix matrix =

我有一个Imageview,每当用户单击名为“翻转图片”的按钮时,我都希望水平翻转图片。当用户第二次点击这个按钮时,它应该返回到原始状态,换句话说,返回

所以它应该重复这种行为。我发现这段代码非常有用,可以在不使用外部库的情况下翻转图像视图,但不知道如何翻转:

代码如下:

 public Bitmap flipImage(Bitmap src, int type) {
    // create new matrix for transformation
    Matrix matrix = new Matrix();
    // if vertical
    if(type == FLIP_VERTICAL) {
        // y = y * -1
        matrix.preScale(1.0f, -1.0f);
    }
    // if horizonal
    else if(type == FLIP_HORIZONTAL) {
        // x = x * -1


        // unknown type
    } else {
        return null;
    }

    // return transformed image
    return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
}
下面是我如何将其应用到名为FlipImage的图像视图中

Flipimage.setImageBitmap(flipImage(BitmapFactory.decodeResource(getResources(), R.drawable.doom01),2));

我在测试和尝试时找到了答案: 只需翻转这些值,它就会将图像视图翻转回来:这是这一行的神奇之处:

第一次单击时:

matrix.preScale(-1.0f, 1.0f);
第二次单击时:

matrix.preScale(1.0f, -1.0f);

因此,您可以初始化计数器,也可以使用android的切换按钮

这是一个很好的代码,可以帮助您解决问题。将位图图像传递给函数,函数返回位图数据类型。。。 或


也许是lib。可能被移植到较低的API,而反向翻转也是一回事。newScale=-1*currentScale。
public Bitmap FlipHorizontally(Bitmap originalImage) {
        // The gap we want between the flipped image and the original image
        final int flipGap = 4;


        int width = originalImage.getWidth();
        int height = originalImage.getHeight();

        // This will not scale but will flip on the Y axis
        Matrix matrix = new Matrix();
        matrix.preScale(-1, 1);

        // Create a Bitmap with the flip matrix applied to it.
        // We only want the bottom half of the image
        Bitmap flipImage = Bitmap.createBitmap(originalImage, 0,0 , width, height, matrix, true);

        // Create a new bitmap with same width but taller to fit reflection
        Bitmap bitmapWithFlip = Bitmap.createBitmap((width + width + flipGap), height, Bitmap.Config.ARGB_8888);

        // Create a new Canvas with the bitmap that's big enough for
        Canvas canvas = new Canvas(bitmapWithFlip);

        //Draw original image
        canvas.drawBitmap(originalImage, 0, 0, null);

       //Draw the Flipped Image
        canvas.drawBitmap(flipImage, width+flipGap, 0, null);


        return bitmapWithFlip;
    }