Glide中大多數(shù)的選項(xiàng)可以使用RequestOptions類和apply()方法來(lái)應(yīng)用。
使用請(qǐng)求選項(xiàng)(其中包括):
例如,要應(yīng)用CenterCrop、Transformation,您的代碼可以這樣編寫:
import static com.bumptech.glide.request.RequestOptions.centerCropTransform;
Glide.with(fragment)
.load(url)
.apply(centerCropTransform(context))
.into(imageView);
從RequestOptions引入靜態(tài)方法將是更加靈活的方式。
如果您始終想要在程序的不同部分共享選項(xiàng),您可以實(shí)例化一個(gè)新的RequestOptions對(duì)象并傳遞給每個(gè)負(fù)載操作:
RequestOptions cropOptions = new RequestOptions().centerCrop(context);
...
Glide.with(fragment)
.load(url)
.apply(cropOptions)
.into(imageView);
apply()可以被調(diào)用多次,所以RequestOptions可以組合。如果兩個(gè)RequestOptions對(duì)象包含沖突的,那么最后設(shè)置的RequestOptions才會(huì)生效。
過(guò)渡選項(xiàng)決定在請(qǐng)求完成后,將會(huì)發(fā)生什么。
應(yīng)用過(guò)渡選項(xiàng):
沒(méi)有過(guò)渡效果,您的圖像會(huì)突然出現(xiàn),立即替代之前的圖像。為了避免突然改變,您可以淡入View,或者使用過(guò)渡選項(xiàng)在Drawable之間淡入淡出。
例如,應(yīng)用淡入淡出:
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
Glide.with(fragment)
.load(url)
.transition(withCrossFade())
.into(view);
與請(qǐng)求選項(xiàng)不同,過(guò)渡選項(xiàng)是您使用Glide加載綁定資源的特殊類型。
因此,當(dāng)您請(qǐng)求Bitmap時(shí),您需要使用BitmapTransitionOption而不是DrawableTransitionOptions。因此,當(dāng)您請(qǐng)求Bitmap,您可能需要的是簡(jiǎn)單的淡入,而不是淡入淡出。
在Glide中RequestBuilder是請(qǐng)求的核心,負(fù)責(zé)攜帶您的選項(xiàng)跟您請(qǐng)求URL/模型開(kāi)啟新的負(fù)載。
使用RequestBuilder指定:
每次調(diào)用Glide.with()您都會(huì)產(chǎn)生一個(gè)RequestManager對(duì)象:
RequestManager requestManager = Glide.with(this);
RequestManager可以指定加載的資源類型。默認(rèn)情況下,獲取的是Drawable RequestBuilder。您可以使用as...方法改變請(qǐng)求類型。例如,您可以調(diào)用asBitmap()您將獲取一個(gè)Bitmap RequestBuilder。
RequestBuilder<Bitmap> requestBuilder = Glide.with(fragment).asBitmap();
如上所示,通過(guò)apply()方法應(yīng)用請(qǐng)求選項(xiàng),使用transition()方法應(yīng)用過(guò)渡選項(xiàng):
RequestBuilder<Drawable> requestBuilder = Glide.with(this).asDrawable();
requestBuilder.apply(requestOptions);
requestBuilder.transition(transitionOptions);
啟動(dòng)多個(gè)負(fù)載時(shí),RequestBuilder可以被重用:
RequestBuilder<Drawable> requestBuilder =
Glide.with(fragment)
.asDrawable()
.apply(requestOptions);
for (int i = 0; i < numViews; i++) {
ImageView view = viewGroup.getChildAt(i);
String url = urls.get(i);
requestBuilder.load(url).into(view);
}