Je suis en train de créer une application, avec des ressources qui peuvent être réutilisées (parce que les boutons sont toujours les mêmes, mais en miroir ou en rotation). Je veux utiliser la même ressource pour ne pas avoir à ajouter 3 autres ressources qui sont exactement comme l'original mais avec une rotation. Mais je ne veux pas non plus mélanger le code avec des choses qui peuvent être déclarées dans le XML ou faire des transformations avec une matrice qui coûteront du temps de traitement.
J'ai un bouton à deux états déclaré dans un XML.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/and_card_details_button_down_left_onclick" /> <!-- pressed -->
<item android:drawable="@drawable/and_card_details_button_down_left" /> <!-- default -->
</selector>
et je veux réutiliser le dessinable parce qu'il sera le même mais tourné de 90º et 45º et je l'assigne au bouton en tant que dessinable.
<Button android:id="@+id/Details_Buttons_Top_Left_Button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/details_menu_large_button" />
Je sais que je peux le faire pivoter à l'aide d'un RotateDrawable
ou avec un Matrix
mais comme je l'ai déjà expliqué, je n'aime pas cette approche.
Est-il possible de réaliser cela directement sur le XML ou quelle est, selon vous, la meilleure façon de procéder ? Mettre toutes les ressources mais avec une rotation, les faire pivoter dans le code ?
--- EDIT --- La réponse de @dmaxi fonctionne très bien, voici comment la combiner avec une liste d'articles :)
<?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="90"
android:toDegrees="90"
android:pivotX="50%"
android:pivotY="50%"
android:drawable="@drawable/and_card_details_button_up_onclick"/>
</item>
<item>
<rotate
android:fromDegrees="90"
android:toDegrees="90"
android:pivotX="50%"
android:pivotY="50%"
android:drawable="@drawable/and_card_details_button_up_onclick"/>
</item>
</selector>