Tworzę aplikację z zasobami, które można ponownie wykorzystać (ponieważ przyciski są zawsze takie same, ale lustrzane lub obrócone). Chcę użyć tego samego zasobu, więc nie muszę dodawać 3 dodatkowych zasobów, które są dokładnie takie same, jak oryginalne, ale są obracane. Ale nie chcę też mieszać kodu z rzeczami, które można zadeklarować w XML lub dokonywać transformacji za pomocą macierzy, która będzie kosztować czas przetwarzania.
Mam przycisk z dwoma stanami zadeklarowany w 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>
i chcę ponownie wykorzystać element do rysowania, ponieważ będzie taki sam, ale obrócony o 90º i 45º i przypisuję przycisk jako element do rysowania.
<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" />
Wiem, że mogę to obrócić za pomocą a RotateDrawable
lub a, Matrix
ale jak już wyjaśniłem, nie podoba mi się to podejście.
Czy można to osiągnąć bezpośrednio w XML lub jak myślisz, jaki będzie najlepszy sposób na zrobienie tego? Umieścić wszystkie zasoby oprócz rotacji, obrócić je w kodzie?
--- EDYTUJ --- Odpowiedź @dmaxi działa świetnie, tak można ją połączyć z listą pozycji :)
<?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>