zoukankan      html  css  js  c++  java
  • android图片加载之Glide学习笔记

    0.借鉴文章地址:http://blog.csdn.net/zivensonice/article/details/51835802 和 http://www.cnblogs.com/zhaoyanjun/p/5404162.html

    1.导包:compile 'com.github.bumptech.glide:glide:3.7.0'

    2.基本用法

      a.加载图片:1)加载URL图片:Glide.with(context).load(URL).into(mImageView);

            2)加载SD卡里的图片-load(String string):Glide.with(context).load(Environment.getExternalStorageDirectory.getAbsolutePath() + "/temp.jpg").into(mImageView);

            3)加载SD卡里的图片-load(File file):Glide.with(context).load(new File(Environment.getExternalStorageDirectory.getAbsolutePath() + "/temp.jpg")).into(mImageView);

            4)加载SD卡里的图片-load(Uri uri):Glide.with(context).load(Uri.fromFile(new File(Environment.getExternalStorageDirectory.getAbsolutePath() + "/temp.jpg"))).into(mImageView);

            

      b.设置加载过程中的图片:Glide.with(context).load(URL).placeHolder(mImageView1).into(mImageView2);

      c.设置加载失败的图片:Glide.with(context).load(URL).erro(mImageView1).into(mImageView2);

      d.设置切换图片淡入淡出的效果:Glide.with(context).load(URL).crossFade().into(mImageView);

      e.切换图片有淡入淡出效果,设置效果持续时间:Glide.with(context).load(URL).crossFade(3000).into(mImageView);

      f.设置改变图片大小:Glide.with(context).load(URL).override(int width, int height).into(mImageView);

      g.设置图片加载动画:Glide.with(context).load(URL).animate(animate resource).into(mImageView);

      h.设置图片加载优先级:Glide.with(context).load(URL).priority(Priority.LOW).into(mImageView);

                 Glide.with(context).load(URL).priority(Priority.HIGH).into(mImageView);

      i.下载图片(必须加入asBitmap/asGIF):Glide.with(context).load(URL).asBitmap().into(new SimpleTarget<Bitmap>(){

        @Override

        public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation){

          //保存方法

        }

      });

      j.设置背景图片:Glide.with(context).load(URL).into(new SimpleTarget<Drawable>(int width, int height){

        @Override

        public void onResourceReady(Drawable resource, GlideAnimation<? super Drawable> glideAnimation){

          //设置背景图片的方法,如:

          btn.setBackground(resource);

        }

      });

      k.设置加载图片监听器:Glide.with(context).load(URL).listener(new RequestListener<String, GlideBitmapDrawable>(){

        @Override

        public boolean onException(Exception e, String model, Target<GlideBitmapDrawable> target, boolean isFirstResource){

          //此处为加载图片错误时的操作,返回true代表用户自己处理,返回false代表交给Glide处理

          return false;        

        }

        @Override

        public voolean onResourceReady(GlideBitmapDrawable resource, String model, Target<GlideBitmapDrawable> target, boolean isFromMemoryCache, boolean isFirstResource){

          //此处为资源准备好时调用的方法,返回true表示时间将会被拦截,不再继续传递下去;返回false表示事件会传递下去,一般为false

          return false;

        }

      }).into(mImageView);

      l.缩略图:1)先加载原图的十分之一作为缩略图,然后再加载原图:Glide.with(context).load(URL).thumbnail(0.1f).into(mImageView);

            2)把本地图片作为缩略图,然后再加载原图:Glide.with(context).load(URL).thumbnail(Glide.with(context).load(image resource)).into(mImageView);

      ps:基本组合使用,如有特殊需求,在后面直接使用对应的方法即可,如:Glide.with(context).load(URL).placeHolder(image resource).error(image resource).into(mImageView);

    3.其他使用方法

      a.清除内存缓存:Glide.get(context).clearMemory();

      b.清除磁盘缓存:Glide.get(context).clearDiskCache();

    4.说明

      a.with的生命周期

        with(Context context):使用Application上下文,Glide请求将不受Activity/Fragment生命周期控制

        with(Activity activity). 使用Activity作为上下文,Glide的请求会受到Activity生命周期控制

        with(FragmentActivity activity).Glide的请求会受到FragmentActivity生命周期控制

        with(android.app.Fragment fragment).Glide的请求会受到Fragment 生命周期控制

        with(android.support.v4.app.Fragment fragment).Glide的请求会受到Fragment生命周期控制

      b.缓存

        1)默认缓存:在Glide源码中有一个DiskCache接口,里面的Factory类定义了默认的磁盘缓存大小为:250 M , 缓存路径在:image_manager_disk_cache 目录下

        2)四种缓存模式:

          DiskCacheStrategy.SOURCE    缓存原图

          DiskCacheStrategy.RESULT     缓存和imageview大小匹配的图

          DiskCacheStrategy.ALL           既缓存原图,有缓存和imageview大小匹配的图

          DiskCacheStrategy.NONE        不做任何缓存

  • 相关阅读:
    HDU3336 Count the string —— KMP next数组
    CodeForces
    51Nod 1627 瞬间移动 —— 组合数学
    51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
    51Nod 1225 余数之和 —— 分区枚举
    51Nod 1084 矩阵取数问题 V2 —— 最小费用最大流 or 多线程DP
    51Nod 机器人走方格 V3 —— 卡特兰数、Lucas定理
    51Nod XOR key —— 区间最大异或值 可持久化字典树
    HDU4825 Xor Sum —— Trie树
    51Nod 1515 明辨是非 —— 并查集 + 启发式合并
  • 原文地址:https://www.cnblogs.com/FruitBoy/p/6306072.html
Copyright © 2011-2022 走看看