78 votes

Android - retourner l'image au format xml

Je veux retourner l'image pour l'arrière-plan du bouton en XML. J'ai vu un exemple de comment le faire, mais c'était par programmation : http://xjaphx.wordpress.com/2011/06/26/image-processing-image-flipping-mirroring . Quoi qu'il en soit, j'ai un fichier xml (button_left_state.xml) comme ci-dessous :

 <?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>

Mais ce code fait juste pivoter l'image à 180 degrés. Est-il possible de retourner l'image en xml ?

304voto

Tommaso Resti Points 4133

Utiliser les attributs d'échelle dans ImageView

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

14voto

Nolesh Points 1353

Je résous mon problème en utilisant 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>

9voto

Vikas Pandey Points 328

Réponse par lien @lewis-mcgeary - lien de réponse original : https://stackoverflow.com/a/43783080/4075178 est le plus simple et le plus explicite.

Ce code est pour retourner horizontalement.

  <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>

Si vous devez retourner verticalement, utilisation

 <group android:pivotY ="half of viewPortHeight"
android:ScaleY =" -1">

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X