我试图垂直翻转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
根本没有翻转。
任何人都知道为什么?
答案 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)