Tips--用代码实现控件点击后的效果
fangler 2015 年 05 月 05 日 android
由于在项目中使用到,所以做个备忘来记录android开发中的tips。
在android开发中经常要给Button等可点击的控件设置不同的状态,这样来区分控件处于点击状态还是未点击状态。一般的做法是使用selector, 如下面:
我们将上面定义的selector传给控件的background,实际上selector是一个drawable对象,准确的来讲,上面的selector最终会被解析成StateListDrawable类对象
如果我们只是简单想要让控件被点击时颜色深一点或浅一点,这个时候并不需要再去让UI提供一张点击时的图片(特别是有时候当UI都没有的时候),我们可以用StateListDrawable来实现点击后的效果。
代码事例如下:
其中bmpArrow和bmpArrowCopy分别为点击前后的图片,我们用bmpArrow来创建bmpArrowCopy,通过LightingColorFilter来实现颜色变化达到不同的效果。(LightingColorFilter中设置的Color值可以根据实际需要进行调整)
需要注意的是:StateListDrawable的addState是有顺序的,范围越大,越要最后调用addState,如果上面的中addState调换位置,就没有效果的。即如果变成这样
就不会看到mButtonBack的点击效果了。
在很多时候UI给的背景图片没有考虑到点击后应该是不一样的,或者只是想让点击后背景图片颜色变换一下,就可以用上面的代码来实现啦= =