本教程內(nèi)容來源于:http://fresco-cn.org
采用 知識(shí)共享 署名 4.0 國(guó)際 許可協(xié)議 進(jìn)行許可
多圖請(qǐng)求需 自定義ImageRequest.
如果你要顯示一張高分辨率的圖,但是這張圖下載比較耗時(shí)。你可以在下載前,先提供一張很快能下載完的小縮略圖。這比一直顯示占位圖,用戶體驗(yàn)會(huì)好很多。
這時(shí),你可以設(shè)置兩個(gè)圖片的URI,一個(gè)是低分辨率的縮略圖,一個(gè)是高分辨率的圖。
Uri lowResUri, highResUri;
PipelineDraweeController controller = Fresco.newControllerBuilder()
.setLowResImageRequest(ImageRequest.fromUri(lowResUri))
.setImageRequest(ImageRequest.fromUri(highResUri))
.setOldController(mSimpleDraweeView.getController())
.build();
mSimpleDraweeView.setController(controller);
本功能僅支持本地URI,并且是JPEG圖片格式
如果本地JPEG圖,有EXIF的縮略圖,image pipeline 會(huì)立刻返回一個(gè)縮略圖。完整的清晰大圖,在decode完之后再顯示。
Uri uri;
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setLocalThumbnailPreviewsEnabled(true)
.build();
PipelineDraweeController controller = Fresco.newControllerBuilder()
.setImageRequest(request)
.setOldController(mSimpleDraweeView.getController())
.build();
mSimpleDraweeView.setController(controller);
大部分的時(shí)候,一個(gè)圖片可能會(huì)對(duì)應(yīng)有多個(gè)URI,比如:
對(duì)于一個(gè)URI,image pipeline 會(huì)依次檢查內(nèi)存,磁盤,如果沒有從網(wǎng)絡(luò)下載。
而對(duì)于一個(gè)圖片的多個(gè)URI,image pipeline 會(huì)先檢查他們是否在內(nèi)存中。如果沒有任何一個(gè)是在內(nèi)存中的,會(huì)檢查是否在本地存儲(chǔ)中。如果也沒有,才會(huì)執(zhí)行網(wǎng)絡(luò)下載。
但凡有任何一個(gè)檢查發(fā)現(xiàn)在內(nèi)存或者在本地存儲(chǔ)中,都會(huì)進(jìn)行復(fù)用。列表順序就是要顯示的圖片的優(yōu)先順序。
使用時(shí),創(chuàng)建一個(gè)image request 列表,然后傳給ControllerBuilder:
Uri uri1, uri2;
ImageRequest request = ImageRequest.fromUri(uri1);
ImageRequest request2 = ImageRequest.fromUri(uri2);
ImageRequest[] requests = { request1, request2 };
PipelineDraweeController controller = Fresco.newControllerBuilder()
.setFirstAvailableImageRequests(requests)
.setOldController(mSimpleDraweeView.getController())
.build();
mSimpleDraweeView.setController(controller);
為了更好的靈活性,你可以在創(chuàng)建Drawee controller時(shí)自定義DataSource Supplier。你可以以FirstAvailiableDataSourceSupplier,IncreasingQualityDataSourceSupplier為例自己實(shí)現(xiàn)DataSource Supplier或者以AbstractDraweeControllerBuilder為例將多個(gè)DataSource Supplier根據(jù)需求組合在一起。