Android Flip ImageView垂直

时间:2015-03-15 14:06:41

标签: android imageview flip

我试图垂直翻转ImageView,但它不起作用。

爪哇:

public static void flipImageVertically(final Bitmap bmp, final ImageView imageView) {
    final Matrix matrix = new Matrix();

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

    imageView.setImageBitmap(Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true));
}

XML:

<LinearLayout                
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/red" />

</LinearLayout>

ImageView根本没有翻转。

任何人都知道为什么?

8 个答案:

答案 0 :(得分:73)

检查this answer。您可以使用xml参数

轻松执行翻转
android:scaleY="-1"

请注意,只有在运行应用程序时,这在预览中才起作用。
从Android Studio 2开始,这也适用于预览。

或者,您可以在代码中setScaleY(-1f)上致电ImageView

答案 1 :(得分:4)

我用过

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="YOUR_DRAWABLE_HERE"
    android:rotation="180"/>  // USE THIS TO ROTATE THE IMAGE

这会将图像旋转180°,具体取决于您的图像,看起来像是翻转。

希望这会有所帮助:)

答案 2 :(得分:2)

在您的小部件上使用 rotationY 属性,

  android:rotationY="180"

例如:

<androidx.appcompat.widget.AppCompatImageView
   android:layout_width="@dimen/button_height_small"
   android:layout_height="@dimen/button_height_small"
   android:layout_gravity="center"
   android:padding="@dimen/space_medium"
   android:rotationY="180"/>

答案 3 :(得分:1)

如果传递给flipImageVertically方法的位图是相反的,并且每次都传递相同的位图,则可能会发生这种情况。 发布更多细节可以帮助缩小范围,缩小xml和代码。

答案 4 :(得分:1)

只是为了通知我已经开发了一个新的库FlipView,它包含并扩展了这个特定的动画(翻转)。我的意思是一个完全可自定义的库,您可以使用任何类型的动画和形状交换任何类型的视图和布局,包括Gmail图像翻转。

对于您的具体情况,我随库提供的示例也有垂直翻转。

请看一下。

答案 5 :(得分:0)

从资源中获取可绘制内容

Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.index);

然后

public static Bitmap flip(Bitmap src, Direction type) {
    Matrix matrix = new Matrix();

    if(type == Direction.VERTICAL) {
        matrix.preScale(1.0f, -1.0f);
    }
    else if(type == Direction.HORIZONTAL) {
        matrix.preScale(-1.0f, 1.0f);
    } else {
        return src;
    }

    return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
}

设置ImageView.setImageBitmap()

答案 6 :(得分:0)

我尝试使用旋转动画,但是最好的方法是

    image.setRotationX(180); for vertical 
    image.setRotationY(180); for horizontal 

唯一的问题是重置它。

编辑: 翻转就像镜像旋转一样。我的ans是用于旋转而不是旋转旋转。对其进行了澄清。

答案 7 :(得分:-1)

我用过

 imageView.setScaleY(-1);

要翻转imageView(围绕枢轴点缩放至未缩放的宽度,请比较documentation