用Imageview实现复选框效果

今天在看前人写的代码时,实现用Imageview实现复选框效果,发现了一种自己以前没有尝试过的写法,还了解了Imageview的getConstantState()方法;


值得学习的是----------------------------------

Android 中 Drawable 类对象主要的功能就是可以给 canvas 上面绘制图形,也可以理解为渲染 canvas。这个功能是通过 Drawable 类对象的 public void draw(Canvas canvas)方法来实现的。

2.Drawable 类对象还可以设置给 View 类对象作为 View 类对象的背景等,如果 Drawable 类对象的属性修改了,Drawable 类对象可以通知关联的 View 类对象重新绘制 View 类对象,这功能是通过 Drawable 类对象的 public void invalidateSelf() 方法来实现的。invalidateSelf 方法会调用关联的 Drawable.Callback 类对象(一般是 View 类对象)的 invalidateDrawable 方法。

ConstantState

每个 Drawable 类对象类都关联有一个 ConstantState 类对象,这是为了保存 Drawable 类对象的一些恒定不变的数据,如果从同一个 res 中创建的 Drawable 类对象,为了节约内存,它们会共享同一个 ConstantState 类对象。比如一个 ColorDrawable 类对象,它会关联一个 ColorState 类对象,color 的颜色值是保存在 ColorState 类对象中的。如果修改 ColorDrawable 的颜色值,会修改到 ColorState 的值,会导致和 ColorState 关联的所有的 ColorDrawable 的颜色都改变。在修改 ColorDrawable 的属性的时候,需要先调用 public Drawable mutate() 方法,让 Drawable 复制一个新的 ConstantState 对象关联。


发布了15 篇原创文章 · 获赞 3 · 访问量 2807

猜你喜欢

转载自blog.csdn.net/u010184528/article/details/71480962
今日推荐