Drawable.Callback

接口,定义更新相关方法invalidateDrawable、scheduleDrawable、unscheduleDrawable

Drawable

封装一个Callback对象并提供设置方法setCallback

定义并实现更新相关方法

invalidateSelf方法

更新
调用传入的Callable的invalidateDrawable方法

scheduleSelf方法

延时更新
调用传入的Callable的scheduleDrawable方法

unscheduleSelf方法

取消延时更新
调用传入的Callable的unscheduleDrawable方法

View/ImageView

View实现Drawable.Callback

实现scheduleDrawable方法

利用AttachInfo.mHandler或 Choreographer.mHandler在UI线程中延时执行传入的Runnable

实现unscheduleDrawable方法

利用AttachInfo.mHandler或 Choreographer.mHandler在UI线程中取消执行Runnable

实现invalidateDrawable方法

调用invalidate方法

View.setBackground和ImageView.setImageDrawable

调用Drawable.setCallback,将View或ImageView作为Drawable.Callback传入Drawable

总结

方法实现

调用Drawable的invalidateSelf方法,实际上是调用View的invalidate方法

调用Drawable的scheduleSelf/unscheduleSelf方法,实际上是在UI线程中延时执行或取消执行传入的Runnable

设计模式:Drawable和View

Drawable.Callback,定义更新相关方法

Drawable,持有Drawable.Callback对象并利用其实现更新相关方法

View,实现Drawable.Callback,并在设置Drawable时,将自身作为Drawable.Callback传入Drawable

实现Drawable调用View中的代码

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部