美文网首页Android开发
Glide加多本地图片文件缓存

Glide加多本地图片文件缓存

作者: 你的益达233 | 来源:发表于2022-07-12 17:58 被阅读0次

需求:想在glide的基础上再做下载到本地 如果本地有图优先取用本地的图

示例代码如下:

private static ExecutorService cachedThreadPool;
    @SuppressLint("NewApi")
    public static void load(Context context, ImageView imageView, String url) {
        if (TextUtils.isEmpty(url)) {

            return;
        }
        if(!((Activity)context).isFinishing() && !((Activity)context).isDestroyed()){

            String beforeSaveFilePath = "";
            if (PermissionAppUtils.hasPermissions(context,PermissionAppUtils.Group.STORAGE)){
                String temp[] = url.replaceAll("\\\\","/").split("/");
                String fileUrlName = "";
                if(temp.length > 1){
                    fileUrlName = temp[temp.length - 1];
                }
                if (!fileUrlName.endsWith(".jpg")){
                    fileUrlName = fileUrlName+".jpg";
                }
                File file = new File(ToolUtils.getDownCustomerLocalPath());
                File[] subFile = file.listFiles();
                if (subFile != null && subFile.length > 0){
                    for (int iFileLength = 0; iFileLength < subFile.length; iFileLength++) {
                        // 判断是否为文件夹
                        if (!subFile[iFileLength].isDirectory()) {
                            String filename = subFile[iFileLength].getName();
                            if (filename.equals(fileUrlName)){
                                beforeSaveFilePath = subFile[iFileLength].getPath();
                                break;
                            }
                        }
                    }
                }

            }
            if (!TextUtils.isEmpty(beforeSaveFilePath)){
                loadLocalFile(context,imageView,beforeSaveFilePath);
            } else {
                Glide.with(context)
                        .asBitmap()
                        .load(url)

                        .dontAnimate()
                        
                        .error(Glide.with(context)
                                .load(url).into(imageView))
                        .into(new SimpleTarget<Bitmap>() {
                            @Override
                            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {

                                if (PermissionAppUtils.hasPermissions(context,PermissionAppUtils.Group.STORAGE)){
                                    if (cachedThreadPool == null){
                                        cachedThreadPool = Executors.newCachedThreadPool();
                                    }
                                    cachedThreadPool.execute(new Runnable() {
                                        @Override
                                        public void run() {
                                            String temp[] = url.replaceAll("\\\\","/").split("/");
                                            String fileName = "";
                                            if(temp.length > 1){
                                                fileName = temp[temp.length - 1];
                                            }
                                            if (!fileName.endsWith(".jpg")){
                                                fileName = fileName+".jpg";
                                            }
                                            setBitmapToLocal(context,fileName,resource);
                                        }
                                    });

                                }
                                imageView.setImageBitmap(resource);
                            }

                        });
            }

        }
    }

要完整代码的可私信我

相关文章

  • Glide加多本地图片文件缓存

    需求:想在glide的基础上再做下载到本地 如果本地有图优先取用本地的图 示例代码如下: 要完整代码的可私信我

  • Glide的简单使用

    Glide加载不同位置的图片 加载git 图片 加载本地视频。(表示没试过) Glide的缓存 图片加载优先级:递...

  • Glide 自定义缓存的路径

    有时候我们的需求是使用Glide单独下载图片,并缓存到本地,如果使用Glide的默认缓存路径,在很多情况下不便于操...

  • git篇之add

    添加本地工作区改动到本地仓库缓存区 git add [file1] [file2] -->添加多个文件到缓存区gi...

  • glide缓存无法更新

    问题 使用glide加载图片,glide有缓存,分为内存缓存和磁盘缓存,可以通过diskCacheStrategy...

  • glide 加载 不使用缓存

    Glide加载相同URL时由于缓存无法更新图片的问题1.如果是本地图片,可以采取取消缓存的方式,这样是比较简单的操...

  • Glide缓存探密

    Glide的缓存策略 前言 众所周知,图片加载框架的基本模式就是三层缓存。内存、文件和网络。所有图片加载框架的基本...

  • Glide 加载相同的URL导致无法更新图片问题

    简介:Glide在加载图片的时候默认使用了缓存机制。Glide的缓存机制分为二级:内存缓存、磁盘缓存。缓存的过程是...

  • iOS 从网页缓存中获取图片

    从网页缓存中获取图片,将图片存放当本地文件夹中

  • 每日一题:Glide源码

    ****每日一题****: Glide glide图片缓存glide源码分享 面试率: ★★★☆☆ 面试技巧与建议...

网友评论

    本文标题:Glide加多本地图片文件缓存

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