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        不做任何缓存

  • 相关阅读:
    VUE动态组件component以及<keep-alive>
    git flow工作流
    vue组件通讯
    webpack加载器和自动打包工具
    webpack的插件使用,以及引入vue文件的注意事项
    webpack起步以及手动配置config文件
    git 基本操作
    C++中静态成员变量的可以在类内初始化吗?
    python 环境变量设置PYTHONPATH
    vector中resize和reserve的区别
  • 原文地址:https://www.cnblogs.com/FruitBoy/p/6306072.html
Copyright © 2011-2022 走看看