美文网首页小技巧androidAndroid知识
Glide 加载图片保存至本地,加载回调监听

Glide 加载图片保存至本地,加载回调监听

作者: code小生 | 来源:发表于2017-09-07 22:25 被阅读3772次

    Glide 加载图片使用到的两个记录

    1.PNG

    Glide 加载图片保存至本地指定路径

    /**
             * Glide 加载图片保存到本地
             *
             * imgUrl 图片地址
             * imgName 图片名称
             */
            Glide.with(context).load(imgUrl).asBitmap().toBytes().into(new SimpleTarget<byte[]>() {
                @Override
                public void onResourceReady(byte[] bytes, GlideAnimation<? super byte[]> glideAnimation) {
                    try {
                        savaBitmap(imgName, bytes);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
    
    // 保存图片到手机指定目录
        public void savaBitmap(String imgName, byte[] bytes) {
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                String filePath = null;
                FileOutputStream fos = null;
                try {
                    filePath = Environment.getExternalStorageDirectory().getCanonicalPath() + "/MyImg";
                    File imgDir = new File(filePath);
                    if (!imgDir.exists()) {
                        imgDir.mkdirs();
                    }
                    imgName = filePath + "/" + imgName;
                    fos = new FileOutputStream(imgName);
                    fos.write(bytes);
                    Toast.makeText(context, "图片已保存到" + filePath, Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (fos != null) {
                            fos.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            } else {
                Toast.makeText(context, "请检查SD卡是否可用", Toast.LENGTH_SHORT).show();
            }
        }
    

    Glide 加载图片回调方法

    Glide.with(context).load(imgUrl)
                    .listener(new RequestListener<String, GlideDrawable>() {
                        @Override
                        public boolean onException(Exception e, String model,
                                                   Target<GlideDrawable> target,
                                                   boolean isFirstResource) {
                            // 可替换成进度条
                            Toast.makeText(context, "图片加载失败", Toast.LENGTH_SHORT).show();
                            return false;
                        }
    
                        @Override
                        public boolean onResourceReady(GlideDrawable resource, String model,
                                                       Target<GlideDrawable> target,
                                                       boolean isFromMemoryCache,
                                                       boolean isFirstResource) {
                            // 图片加载完成,取消进度条
                            Toast.makeText(context, "图片加载成功", Toast.LENGTH_SHORT).show();
                            return false;
                        }
                    }).error(R.mipmap.ic_launcher_round)
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(imageView);
    

    相关文章

      网友评论

      本文标题:Glide 加载图片保存至本地,加载回调监听

      本文链接:https://www.haomeiwen.com/subject/kzjwjxtx.html