我正在尝试创建复杂的drawable,其中一张图片内部更改主视图状态更改。我当前的资源看起来像那样
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<layer-list>
<item>
<selector>
<item android:state_activated="true" android:drawable="@drawable/img_activated_icon" />
<item android:drawable="@drawable/img_default_icon" />
</selector>
...
接下来我将它用作我的ImageView的src。 整个drawable呈现正常,但选择器忽略了ImageView上的setActive()调用,并始终显示“默认”图标。
我做错了什么?
UPD
所以,这里是理想的可绘制层次结构:
layer-list
transition
background1
background2
image
在这种情况下,我无法激活过渡动画,所以我将过渡移到了上一级:
transition
layer-list
background1
image
layer-list
background2
image (the same image!)
那么,我如何实现第一个布局并能够控制转换和更改图像的来源?
答案 0 :(得分:1)
所以基本上你希望能够手动控制drawables,并让它们对状态变化做出反应。据我所知,尝试在View
上设置假状态(按下/聚焦/等)是糟糕练习,所以我建议你不要尝试这样做。我之前没有这样做,但我不明白为什么不能这样做。我的想法是为此按钮/图片创建一个LevelList
StateList
个。{/ p>
LevelList
可让您控制按钮/图片所具有的“主题”,具体取决于您使用setLevel()
设置的级别。每个级别都指向一个“主题”StateList
,它将为所有各种状态(按下/聚焦/等)提供不同的“主题”可绘制对象。
http://developer.android.com/guide/topics/resources/drawable-resource.html#LevelList http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0" android:drawable="@drawable/state_list_icon_default" />
<item android:maxLevel="1" android:drawable="@drawable/state_list_icon_another_style_1" />
<item android:maxLevel="2" android:drawable="@drawable/state_list_icon_another_style_2" />
</level-list>
你的state_list_icon_default
会有你的默认抽奖,就像这样(这取决于你想要的抽奖方式):
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/img_default_icon_pressed" />
<item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/img_default_icon_focused" />
<item android:state_enabled="false" android:state_focused="true" android:drawable="@drawable/img_default_icon_disabled_focused" />
<item android:state_enabled="false" android:drawable="@drawable/img_default_icon_disabled" />
<item android:drawable="@drawable/img_default_icon"/>
</selector>
这里有一些教程可以看到更深入的实现。
http://iserveandroid.blogspot.com/2010/10/progress-bar-implementation-using-level.html http://sermojohn.wordpress.com/2012/02/04/using-a-state-list-drawable-as-a-button-background-image/