Я создаю приложение с ресурсами, которые можно использовать повторно (потому что кнопки всегда одинаковы, но зеркально отражены или повернуты). Я хочу использовать тот же ресурс, поэтому мне не нужно добавлять еще 3 ресурса, которые точно такие же, как оригинал, но повернуты. Но я также не хочу смешивать код с вещами, которые могут быть объявлены в XML, или выполнять преобразования с помощью матрицы, которая требует времени обработки.
У меня есть кнопка с двумя состояниями, объявленная в 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>
и я хочу повторно использовать объект для рисования, потому что он будет таким же, но повернутым на 90 ° и 45 °, и я назначаю кнопку как элемент для рисования.
<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" />
Я знаю, что могу повернуть его с помощью RotateDrawable
или, Matrix
но, как я уже объяснил, мне не нравится такой подход.
Можно ли добиться этого непосредственно в XML или как вы думаете, что будет лучшим способом сделать это? Поместить все ресурсы, но повернуты, повернуть их в коде?
--- РЕДАКТИРОВАТЬ --- Ответ @dmaxi отлично работает, вот как объединить его со списком элементов :)
<?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>