Glide探究一

2017-08-28  本文已影响0人  coke613

Glide基本使用:

添加依赖:compile 'com.github.bumptech.glide:glide:3.5.2'
三部曲:
①with()
②load()
③into()

    Glide.with(MainActivity.this).load(imageUrl).into(ivPicture);
Glide.with():确定图片生命周期
1.png

Glide.with()方法是用于创建一个加载图片的实例RequestManager,该方法的参数可以是Activity,Fragment,所以在使用的时候直接通过this调用即可。如果在调用的时候既没有在Activity也没有在Fragment中,此时我们可以直接传入Application,获取上下文。传入到with方法中。需要注意的是传入with参数的不同,会直接影响到图片的生命周期。如果直接使用的是Activity或者Fragment,当界面销毁的时候,图片也会跟着销毁。如果传入的是ApplicationContext,那么只有退出应用程序的时候,图片才会停止。

load():指定加载图片资源

该方法在RequestManager类中,是一个重载函数。

     省略部分代码~~~~~~
public DrawableTypeRequest<String> load(String string) {
        return (DrawableTypeRequest<String>) fromString().load(string);
    }

public DrawableTypeRequest<Uri> load(Uri uri) {
        return (DrawableTypeRequest<Uri>) fromUri().load(uri);
    }

public DrawableTypeRequest<File> load(File file) {
        return (DrawableTypeRequest<File>) fromFile().load(file);
    }

  public DrawableTypeRequest<Integer> load(Integer resourceId) {
        return (DrawableTypeRequest<Integer>) fromResource().load(resourceId);
    }

 public DrawableTypeRequest<byte[]> load(byte[] model) {
        return (DrawableTypeRequest<byte[]>) fromBytes().load(model);
    }

 public <T> DrawableTypeRequest<T> load(T model) {
        return (DrawableTypeRequest<T>) loadGeneric(getSafeClass(model)).load(model);
    }

  ...............

该方法用于加载指定的图片资源,该资源可以是本地图片,网络图片,或者是字节数组,URI对象等。除了我们刚刚那种方式来调用之外,我们还可以这样调用:

// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);

// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);

// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);

// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);
into():指定加载图片的view

让图片显示在哪个ImageView上,把这个ImageView的实例传进去就可以了。

Glide占位符:

API:

· 占位符

        Glide.with(this)
                 .load(imageUrl)
                 .asBitmap()
                 .placeholder(R.drawable.a)  //占位符
                 .into(ivPicture);

· 异常占位符

   Glide.with(this)
               .load(imageUrl)
               .asBitmap()
               .placeholder(R.drawable.a)  //占位符 
               .error(R.drawable.b)    //加载不存在的链接,异常占位符
               .into(ivPicture);

· 关于缓存

Glide.with(this)
            .load(imageUrl)
            .placeholder(R.drawable.a)  //占位符
            .diskCacheStrategy(DiskCacheStrategy.NONE)//不需要缓存存在
                             //DiskCacheStrategy.ALL 保留所有的缓存
                             //DiskCacheStrategy.SOURCE 保留原始数据的缓存
                             //DiskCacheStrategy.RESULT 保留最后数据的缓存
            .error(R.drawable.b)    //加载不存在的链接,显示的图片,异常占位符
            .into(ivPicture);

· 关于静态&&动态图片

① 如果图片是一张动态图的话,调用asBitmap函数,会将动图加载成静态图,而是第一帧。
② 如果图片是一张静态图的话,调用asGif函数,不会转换成动态图,而是加载失败,显示异 常占位符。

· 设置图片大小

Glide.with(this)
       .load(imageUrl)
       .override(300,200)     //指定图片的大小,这里不管你设置iv的大小
       .into(ivPicture);
上一篇下一篇

猜你喜欢

热点阅读