android – 这些略有不同的状态drawables的任何行为差异?

前端之家收集整理的这篇文章主要介绍了android – 这些略有不同的状态drawables的任何行为差异?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Q1)查看listSelector的原始ListView状态drawable我们有这样的东西(我剥离了一些代码来简化示例):
<selector>
    <item android:drawable="<TRANSPARENT>" android:state_window_focused="false"/>
    <item android:drawable="<DRAWABLE_1>" android:state_focused="true" android:state_pressed="true"/>
    <item android:drawable="<DRAWABLE_1>" android:state_focused="false" android:state_pressed="true"/>
    <item android:drawable="<DRAWABLE_2>" android:state_focused="true"/>
</selector>

但我一直在我的应用程序上这样做:

<selector>
    <item android:drawable="<DRAWABLE_2>" android:state_pressed="false" android:state_focused="true"/>
    <item android:drawable="<DRAWABLE_1>" android:state_pressed="true"/>
    <item android:drawable="<TRANSPARENT>" />
</selector>

这似乎产生了相同的结果,而且更加简单.你是否注意到第一个比我自己的版本更好的情况?我只是想确保我没有遗漏一些重要因素,因为我希望尽可能缩短代码

Q2)我看到许多状态drawables与< item android:drawable =“< TRANSPARENT>”机器人:state_window_focused = “假”/>作为最重要的项目,但我不明白为什么需要它. state_window_focused总是让我感到困惑……真的有必要吗?

解决方法

我不得不把这个问题写进一个答案,即使我不确定它,但这就是我的想法:

我将从Q2开始:

state_window_focused对应于默认行为(“窗口”可见但未聚焦),我认为它仅用于指出默认行为(TRANSPARENT).

关于Q1:

DRAWABLE2将在两种情况下和相同条件下可视化 – 聚焦和未压缩,因为:

第一种情况:

<item android:drawable="<DRAWABLE_2>" android:state_focused="true"/>

第二种情况:

`<item android:drawable="<DRAWABLE_2>" android:state_focused="true" android:state_pressed="false"/>`

我们有D2专注,但在你的情况下也没有压力.

只有在每种情况下按下时,DRAWABLE1才会可见.区别在于,在第一种情况下,两个额外的状态也给出了android:state_focused =“true / false”,这没有任何意义,因此案例1中的两行可以缩小为一个(恰好是一个你有):

<item android:drawable="<DRAWABLE_1>"  android:state_pressed="true"/>

所以,总结一下:

案例1 – 你有:

<selector>
    <item android:drawable="<TRANSPARENT>" android:state_window_focused="false"/>
    <item android:drawable="<DRAWABLE_1>" android:state_focused="true" android:state_pressed="true"/>
    <item android:drawable="<DRAWABLE_1>" android:state_focused="false" android:state_pressed="true"/>
    <item android:drawable="<DRAWABLE_2>" android:state_focused="true"/>
</selector>

这相当于:

<selector>
    <item android:drawable="<TRANSPARENT>" android:state_window_focused="false"/>
    <item android:drawable="<DRAWABLE_1>"  android:state_pressed="true"/>
    <item android:drawable="<DRAWABLE_2>"  android:state_focused="true"/>
</selector>

和你的情况(案例2),进行比较:

<selector>
    <item android:drawable="<DRAWABLE_2>" android:state_pressed="false" android:state_focused="true"/>
    <item android:drawable="<DRAWABLE_1>" android:state_pressed="true"/>
    <item android:drawable="<TRANSPARENT>" />
</selector>

到目前为止我能看到的唯一区别是,DRAWABLE2只会在聚焦时显示(无论是否按下),但在你的情况下,它必须也是未按下的,这是唯一的条件是不同.

猜你在找的Android相关文章