您的位置:首页 > 移动开发 > Android开发

Android图片加载框架Glide使用总结

2016-10-10 15:10 573 查看
目录:
    使用Glide结合列表的样式进行图片加载
    如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用

    当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法
    当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示
    图片的缩放,centerCrop()和fitCenter()
    显示gif动画
    显示本地视频
    缓存策略
    优先级,设置图片加载的顺序
 
  当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象
    集成网络栈(okHttp,Volley)

1.使用Glide结合列表的样式进行图片加载:
        1)    如果使用的是ListView,可以直接在Adapter的getView方法中使用:         
      

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (null == convertView) {

//.....

}

Glide

.with(context)

.load(imageUrls[position])

.into(holder.imageView);

return convertView;

}


        2)    如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用:        

@Override

public void onBindViewHolder(RVViewHolder holder, int position) {


Glide.with(MainActivity.this)

        .load(args[position])

        .into(holder.imageView);

}


       
         3)    当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法: 

Glide

.with(context)

.load(UsageExampleListViewAdapter.eatFoodyImages[0])

.placeholder(R.mipmap.ic_launcher) // can also be a drawable

.into(imageViewPlaceholder);


        

        4)    当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示:

Glide

.with(context)

.load("http://futurestud.io/non_existing_image.png")

.error(R.mipmap.future_studio_launcher) // will be displayed if the image cannot be loaded

.into(imageViewError);


        5)    图片的缩放,centerCrop()和fitCenter():        

//使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的

//Height是match_parent则图片就会被拉伸填充

Glide.with(MainActivity.this)

        .load(args[position])

        .centerCrop()

        .into(holder.imageView);


//使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围

//该图像将会完全显示,但可能不会填满整个 ImageView。

Glide.with(MainActivity.this)

        .load(args[position])

        .fitCenter()

        .into(holder.imageView);


        6)    显示gif动画:

Glide

.with( context )

.load( gifUrl )

.asGif() //判断加载的url资源是否为gif格式的资源

.error( R.drawable.full_cake )

.into( imageViewGif );


        7)    显示本地视频

String filePath = "/storage/emulated/0/Pictures/example_video.mp4";

Glide

.with( context )

.load( Uri.fromFile( new File( filePath ) ) )

.into( imageViewGifAsBitmap );


        8)    缓存策略:

Glide

.with( context )

.load( Images[0] )

.skipMemoryCache( true ) //跳过内存缓存

.into( imageViewInternet );


Glide

.with( context )

.load( images[0] )

.diskCacheStrategy( DiskCacheStrategy.NONE ) //跳过硬盘缓存

.into( imageViewInternet );


DiskCacheStrategy.NONE
 什么都不缓存
DiskCacheStrategy.SOURCE
 仅仅只缓存原来的全分辨率的图像
DiskCacheStrategy.RESULT
 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的)
DiskCacheStrategy.ALL
 缓存所有版本的图像(默认行为
     
  9) 
  优先级,设置图片加载的顺序:

    

Priority.LOW

Priority.NORMAL

Priority.HIGH

Priority.IMMEDIATE
 
 

private void loadImageWithHighPriority() {

Glide

.with( context )

.load( mages[0] )

.priority( Priority.HIGH )

.into( imageViewHero );

}



private void loadImagesWithLowPriority() {

Glide

.with( context )

.load( images[1] )

.priority( Priority.LOW )

.into( imageViewLowPrioLeft );



Glide

.with( context )

.load( images[2] )

.priority( Priority.LOW )

.into( imageViewLowPrioRight );

}


        10)    当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象:

//括号中的300,600代表宽和高但是未有作用

SimpleTarget target = new SimpleTarget<Bitmap>(300,600) {

    @Override

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

        holder.imageView.setImageBitmap(resource);

    }

};



Glide.with(MainActivity.this)

        .load(args[position])

        .asBitmap()

        .into(target);


        
        11)    集成网络栈(okHttp,Volley):  

dependencies {

// your other dependencies

// ...



// Glide

compile 'com.github.bumptech.glide:glide:3.6.1'



// Glide's OkHttp Integration 

compile 'com.github.bumptech.glide:okhttp-integration:1.3.1@aar'

compile 'com.squareup.okhttp:okhttp:2.5.0'

}


dependencies {

// your other dependencies

// ...



// Glide

compile 'com.github.bumptech.glide:glide:3.6.1'



// Glide's Volley Integration 

compile 'com.github.bumptech.glide:volley-integration:1.3.1@aar'

compile 'com.mcxiaoke.volley:library:1.0.8'

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: