首页 > 代码库 > ImageView setImageURI图片不改变的问题

ImageView setImageURI图片不改变的问题

问题描述:图片文件已改变,第二次调用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 }

ImageView setImageURI图片不改变的问题