美文网首页
Glide探究一

Glide探究一

作者: coke613 | 来源:发表于2017-08-28 18:02 被阅读0次

    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);
    

    相关文章

      网友评论

          本文标题:Glide探究一

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