判断ImageView的图片是否为默认

之前一直在找如何判断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();
	  }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值