Glide的使用

2016-11-22  本文已影响0人  Victory_IT

目录:

添加依赖:compile'com.github.bumptech.glide:glide:3.7.0'

使用Glide结合列表的样式进行图片加载

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

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

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

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

显示gif动画

显示本地视频

缓存策略

优先级,设置图片加载的顺序

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

集成网络栈(okHttp,Volley)

1.使用Glide结合列表的样式进行图片加载:

1)如果使用的是ListView,可以直接在Adapter的getView方法中使用:

@Override

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){

if(null==convertView){

//.....

}

Glide

.with(context)

.load(imageUrls[position])

.into(holder.imageView);

returnconvertView;

}

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

@Override

publicvoidonBindViewHolder(RVViewHolderholder,intposition){

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)显示本地视频

StringfilePath="/storage/emulated/0/Pictures/example_video.mp4";

Glide

.with(context)

.load(Uri.fromFile(newFile(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

privatevoidloadImageWithHighPriority(){

Glide

.with(context)

.load(mages[0])

.priority(Priority.HIGH)

.into(imageViewHero);

}

privatevoidloadImagesWithLowPriority(){

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代表宽和高但是未有作用

SimpleTargettarget=newSimpleTarget(300,600){

@Override

publicvoidonResourceReady(Bitmapresource,GlideAnimationglideAnimation){

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'

}

上一篇下一篇

猜你喜欢

热点阅读