【发布时间】:2012-02-01 17:31:22
【问题描述】:
我正在创建一个应用程序,其资源可重复使用(因为按钮始终相同,但镜像或旋转)。我确实想使用相同的资源,因此我不必再添加 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º,我将按钮分配给drawable。
<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>
【问题讨论】:
-
无需为你的英语道歉就可以了。欢迎来到 SO!
-
在此线程stackoverflow.com/questions/14727426/… 上查看相同的问题,任何建议都会很棒!
-
基于矢量的可绘制对象大大简化了问题(答案如下)。
标签: android android-layout drawable android-xml