博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ImageView setImageURI图片不改变\NetWorkImageView 不显示的问题
阅读量:6902 次
发布时间:2019-06-27

本文共 1772 字,大约阅读时间需要 5 分钟。

ImageView

问题描述:图片文件已改变,第二次调用ImageView.setImageURI时无法更新图片

分析:setImageURI方法中对uri进行了缓存,由于第一次加载过了该uri的资源,即使该文件内容改变了,判断中仍然会使用之前加载的。

1     public void setImageURI(Uri uri) { 2         if (mResource != 0 || 3                 (mUri != uri && 4                  (uri == null || mUri == null || !uri.equals(mUri)))) { 5             updateDrawable(null); 6             mResource = 0; 7             mUri = uri; 8  9             final int oldWidth = mDrawableWidth;10             final int oldHeight = mDrawableHeight;11 12             resolveUri();13 14             if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) {15                 requestLayout();16             }17             invalidate();18         }19     }

 

解决办法:

1、使用不同的文件名(不同的URI)

2、使用setImageBitmap的方式代替

1 Bitmap bmp;2 try {3     bmp = MediaStore.Images.Media.getBitmap(context.getContentResolver(), Uri.fromFile(file));4     iv.setImageBitmap(bmp); 5 } catch (FileNotFoundException e) {6 } catch (IOException e) {7 }

NetWorkImageView

//Copy the code from Volley's NetworkImageView and change onLayout as below.@Overrideprotected void onLayout(boolean changed, int left, int top, int right, int bottom) {    super.onLayout(changed, left, top, right, bottom);    if (!TextUtils.isEmpty(mUrl)) {        loadImageIfNecessary(true);    }else{        if (mImageContainer != null) {            mImageContainer.cancelRequest();            mImageContainer = null;        }    }}//Change the other ImageView image setters, for example...@Overridepublic void setImageDrawable(Drawable drawable) {    mUrl = null;    super.setImageDrawable(drawable);}@Overridepublic void setImageURI(Uri uri) {    mUrl = null;    super.setImageURI(uri);}

 

Reference:http://kalkanotel.com/networkimageview-set-image-from-file-i225690.htm

转载地址:http://djpdl.baihongyu.com/

你可能感兴趣的文章
linux shell 中"2>&1"含义
查看>>
oracle 11g RAC grid安装前准备
查看>>
01背包 暴力搜索
查看>>
RIP区域和OSPF区域通信
查看>>
MySQL
查看>>
k3cloud开发环境引入dll与net源代码
查看>>
网络安全系列之四十 在Linux中设置SET位权限
查看>>
SCCM OSD部署排错
查看>>
十道非常好的shell脚本试题
查看>>
app项目案例一手机浏览器
查看>>
linuxmint安装配置
查看>>
java 中 isEmpty和isBlank区别
查看>>
申请SSL证书怎样验证域名所有权
查看>>
麒麟开源堡垒机集中管控平台软件简介
查看>>
第十一单元练习
查看>>
从零开始的linux 第十六章
查看>>
EOS内存RAM是如何买卖的
查看>>
微服务架构中zuul的两种隔离机制实验
查看>>
电子合同将取代纸质合同吗?
查看>>
官宣丨“创客集结号”成功接入“广东省教育资源公共服务平台”!
查看>>