android 将imageview的图片保存到手机后,并通知显示。(文件管理相应的目录可以找到,图片中也是可以找到。)

将imageview中的图片,保存到相册以后,不管在哪里都找不到,

只有通过文件管理中的查找具体的文件,才可以找到。否则重启手机也是可以在指定位置找到的。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                            Uri.fromFile(new File(picPath))));//通知刷新

直接上代码:

private void saveImage(Bitmap bitmap){
try {
            String filename = System.currentTimeMillis() + ".jpg";
            File outFile = new File(outDir, filename);
            FileOutputStream fos = new FileOutputStream(outFile);

            boolean flag = bitmap.compress(
                    Bitmap.CompressFormat.JPEG, 100, fos);// 把数据写入文件
            if (flag) {
                String picPath = outFile.getAbsolutePath();
                LogUtil.i(TAG,picPath); 

try { fos.flush(); fos.close();
            //以下这一句是关键,否则保存了以后,不能即时刷新,所以不管哪里都找不到,除非你重启手机。
                    mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                            Uri.fromFile(new File(picPath))));
                } catch (IOException e) {
                    LogUtil.e(TAG, e.toString());
                }
            } else {
                LogUtil.i(TAG, getString(R.string.wz_pic_save_error));
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
}

以上只通知保存成功的文件刷新即可。

调用:

ImageView iv;

iv.buildDrawingCache(true);
iv.buildDrawingCache();
bitmap = iv.getDrawingCache();
.... 调用,当然也可以将这代码合并到上面的方法中。
iv.setDrawingCacheEnabled(false);

 下面的说明是早期版本中的说明,现在的新版本以上面为准。

1.     在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法:

            iv_photo.setDrawingCacheEnabled(true);

        否则,无法从ImageView对象iv_photo中获取图像;

2.     在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法:

            iv_photo.setDrawingCacheEnabled(false);

        以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。

https://blog.csdn.net/weichushun/article/details/48034721

道法自然
原文地址:https://www.cnblogs.com/jiduoduo/p/14837889.html