本文共 2467 字,大约阅读时间需要 8 分钟。
问题:加载本地图片一直加载不出来,也不知道是哪里出现的问题,以为是图片命名的方式,试了也没用,后面又看了glide的源码发现glide加载本地图片也是用的那样的方法,后面问了下上家同事,郭佬,才发现一开始的问题便是图片路径的问题。
步骤:
我是将一个ImageView通过模糊度生成一个图片保存到SD卡中,然后再在其他的地方进行调用展示
(一):图片生成并保存
public static void viewSaveToImage(Context context, View view) { view.setDrawingCacheEnabled(true); view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); view.setDrawingCacheBackgroundColor(Color.WHITE); // 把一个View转换成图片 Bitmap cachebmp = loadBitmapFromView(view); FileOutputStream fos; String imagePath = ""; try { // 判断手机设备是否有SD卡 boolean isHasSDCard = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); if (isHasSDCard) { // SD卡根目录 File sdRoot = Environment.getExternalStorageDirectory(); String fileName = getSDPath() +"/" + Calendar.getInstance().getTimeInMillis()+".jpg";//以name存在目录中 File file = new File(fileName);// File file = new File(sdRoot, "wuaisport/" + Calendar.getInstance().getTimeInMillis() + ".jpg"); Log.e(TAG, "viewSaveToImage filePath : " + file.getPath()); SPUtils.getInstance().put(Constants.SKIN_CONFIG_PIC_PATH, file.getAbsolutePath()); //保存图片后发送广播通知更新数据库 Uri uri = Uri.fromFile(file); context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri)); fos = new FileOutputStream(file); imagePath = file.getAbsolutePath(); } else throw new Exception("创建文件失败!"); cachebmp.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); } LogUtil.e("imagePath=" + imagePath); view.destroyDrawingCache(); }
获取SD卡的路径是关键:
public static String getSDPath() { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED);//判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getExternalStorageDirectory();//获取跟目录 } return sdDir.toString(); }
生成的图片路径:imagePath=/storage/emulated/0/1556246754134.jpg
(二)在其他地方进行展示(使用glide):
Glide.with(context).load(Uri.fromFile(new File(absPicPath))).into(ivCustomeBg);
glide加载本地SD卡图片并进行显示。
转载地址:http://cbxkf.baihongyu.com/