Подтвердить что ты не робот

Android - флип-изображение в xml

Я хочу перевернуть изображение для фона кнопки в 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?

4b9b3361

Ответ 1

Я решаю свою проблему, используя 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>

Ответ 2

Используйте атрибуты шкалы в ImageView

android:scaleX="-1" //To flip horizontally or
android:scaleY="-1" //To flip vertically

Ответ 3

Здесь очень короткое и понятное решение.

Добавьте это в изображение:

 android:rotationX="180"

Это будет переворачивать изображениеView горизонтально (слева ↔ справа).

Для вертикали, поставьте это:

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, которую я создал, который может сделать это через JNI):

введите описание изображения здесь