Я создаю приложение с ресурсами, которые можно использовать повторно (потому что кнопки всегда одни и те же, но зеркальные или повернутые). Я хочу использовать один и тот же ресурс, поэтому мне не нужно добавлять еще 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>
и я хочу повторно использовать drawable, потому что он будет таким же, но повернут на 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 или как вы думаете, что это лучший способ сделать это? Поместите все ресурсы, но поверните их, поверните их в коде?
--- EDIT --- Ответ @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>