判断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 对象关联。
因此,解决方法如下:
参考地址: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(); }
相关文章推荐
- ubuntu下安装和配置java开发环境[转]sudo
- 用DOM动态控制表格
- NPOI 1.2.4教程 –日期函数
- JVM学习笔记-jvm内存区域模型
- oracle全文检索步骤
- CC学习笔记4:5 FMT类:安全管理
- Effectively Moving SAS Data into Teradata
- POI对Excel的单元格格式区分
- 编程珠玑笔记1
- java中操作mysql操作
- 万年历
- Bash 为何要发明 shopt 命令
- struts.xml
- ip地址变化,造成plsql连接oracle不成功问题的解决
- LoadRunner多负载产生器
- 036.Goto 代替 Break 结束循环
- QT5入门之19 -QT调用外部程序
- Eclipse自动化代码分析工具
- 037.Goto 代替 Continue 结束本次循环
- 一个密码复杂度的验证js