android selector 自定义 drawable state

本文探讨了Android中Selector的工作原理,它基于StateListDrawable,通过DrawableContainer的selectDrawable方法和setVisible实现图像变化。在项目中,特别是在实现夜间模式切换时,利用Selector结合自定义drawable状态可以高效地改变UI颜色图案。切换夜间模式会触发整个UI的刷新,通过遍历并刷新所有View来实现这一效果,而这个过程涉及到重写多个DrawableState相关函数。
摘要由CSDN通过智能技术生成

selector<对应的drawable是StateListDrawable> 的运作原理 这一篇已经讲的很清楚了:

http://blog.csdn.net/guolin_blog/article/details/17045157

最后一步显示是通过DrawableContainer(StateListDrawable的基类)<DrawableContainer extends Drawable implements Drawable.Callback>

的selectDrawable(int idx)

然后mCurrDrawable.setVisible(......) 来实现的图像变化。

setVisible(......)在有变化的情况下调用invalidateSelf()->注册的callback->invalidateDrawable(this).........一路callback,

最后到View<View implements Drawable.Callback>->invalidateDrawable()

public void invalidateDrawable(Drawable drawable) {
        if (verifyD
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值