我想在xml中翻转按钮背景的图像。我已经看到了如何做到的示例,但它是以编程方式:http://xjaphx.wordpress.com/2011/06/26/image-processing-image-flipping-mirroring。 无论如何,我有一个xml文件(button_left_state.xml),如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<rotate android:fromDegrees="180.0" android:toDegrees="180.0"
android:pivotX="50%" android:pivotY="50%" android:drawable="@drawable/buttonrightpressed" />
</item>
<item>
<rotate android:fromDegrees="180.0" android:toDegrees="0.0"
android:pivotX="50%" android:pivotY="50%" android:drawable="@drawable/buttonright"/>
</item>
</selector>
但是这段代码只是将图像旋转到180度。 是否可以在xml中翻转图像?
答案 0 :(得分:220)
使用ImageView中的缩放属性
android:scaleX="-1" //To flip horizontally or
android:scaleY="-1" //To flip vertically
答案 1 :(得分:17)
这是一个非常简短易懂的解决方案。
将其添加到imageView:
android:rotationX="180"
这将水平翻转imageView(左侧&lt; - &gt;右侧)。
对于垂直方式,请将其放入:
android:rotationY="180"
示例:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="original image:"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/test"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="flip horizontally :"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:rotationY="180"
android:src="@drawable/test"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="flip vertically:"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:rotationX="180"
android:src="@drawable/test"/>
</LinearLayout>
结果(从JNI library that I've made拍摄的图像,可以通过JNI拍摄):
答案 2 :(得分:8)
我使用layer-list
解决了我的问题:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient android:startColor="#9f9" android:centerColor="#000"
android:endColor="#0f0" android:angle="-90" />
<stroke android:width="1.0px" android:color="#444" />
<corners android:bottomRightRadius="7dip"
android:bottomLeftRadius="0.1dp"
android:topLeftRadius="0.1dp"
android:topRightRadius="7dip"/>
</shape>
</item>
<item>
<rotate android:fromDegrees="180.0" android:toDegrees="180.0"
android:pivotX="50%" android:pivotY="50%" android:drawable="@drawable/arrow_right" />
</item>
</layer-list>
</item>
</selector>
答案 3 :(得分:2)
通过@ lewis-mcgeary链接答复- 原始答案链接:https://stackoverflow.com/a/43783080/4075178 是最简单和不言自明的。
此代码用于水平翻转。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">
<group
android:name="rotationGroup"
android:pivotX="12"
android:scaleX="-1" >
<path
android:fillColor="#FFFFFF"
android:pathData="M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z" />
</group>
如果您需要垂直翻转, 使用
<group android:pivotY ="half of viewPortHeight"
android:ScaleY =" -1">