您的位置:首页 > 移动开发 > Android开发

Android 判断点击的是否为同一张图片

2018-03-25 21:35 746 查看

  Drawable 

Drawable就是一个可绘制的对象,或者叫做可渲染的对象,里面保存的是可以绘制的数据,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还可能只是一个颜色(ColorDrawable)等等,等等。1.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 对象关联。
可以通过判断ConstantState来判断点击的是否是同一个drawable ,代码如下:public void find(View v){
ImageView img=(ImageView)v;
if(img.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.pic_a).getConstantState())){
Toast.makeText(getApplicationContext(), "同一个drawable图片", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "不对", Toast.LENGTH_SHORT).show();
}
}
以上代码转自:https://blog.csdn.net/zxd1988/article/details/51693391
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐