您的位置:首页 > 其它

判断ImageView的图片是否为默认

2015-10-27 15:30 281 查看
之前一直在找如何判断ImageView中的图片是网络加载的还是本地的,今天终于找到了。

参考地址:csdn博客百度知道

imageView.setImageResource(R.drawable.pic);

如果直接使用ImageView的getdrawable方法获取图片,imageView.getDrawable().equals(context.getResources().getDrawable(R.drawable.pic)),

尽管使用的都是Drawable下的图片,但是这两个方法获取的是两个不同的对象,不过

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

因此,解决方法如下:

ImageView imageView = (ImageView)view.findViewById(R.id.pic);
if(imageView.getDrawable().getCurrent().getConstantState()==getResources().getDrawable(R.drawable.pic).getConstantState()){
Toast.makeText(view.getContext(), "图片未发生变化", 0).show();
}else{
Toast.makeText(view.getContext(), "图片加载完成,跳转", 0).show();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: