在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 多圖請求及圖片復用
進度條
在JAVA代碼中使用Drawees
Drawee的各種效果配置
緩存
一些陷阱
關于在Android Studio中編譯
多圖請求及圖片復用
自定義網(wǎng)絡加載
支持的URIs
可關閉的引用
監(jiān)聽下載事件
修改圖片
引入Fresco
縮放
圓角和圓圈
配置Image Pipeline
縮放和旋轉(zhuǎn)圖片
(圖片請求)Image Requests
自定義View
使用ControllerBuilder
在XML中使用Drawees
開始使用 Fresco
關鍵概念
Image Pipeline介紹
漸進式JPEG圖
數(shù)據(jù)源和數(shù)據(jù)訂閱者
直接使用Image Pipeline
動畫圖(gif)
使用其他的Image Loader

多圖請求及圖片復用

本教程內(nèi)容來源于:http://fresco-cn.org
采用 知識共享 署名 4.0 國際 許可協(xié)議 進行許可

多圖請求需 自定義ImageRequest.

先顯示低分辨率的圖,然后是高分辨率的圖

如果你要顯示一張高分辨率的圖,但是這張圖下載比較耗時。你可以在下載前,先提供一張很快能下載完的小縮略圖。這比一直顯示占位圖,用戶體驗會好很多。

這時,你可以設置兩個圖片的URI,一個是低分辨率的縮略圖,一個是高分辨率的圖。

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 會立刻返回一個縮略圖。完整的清晰大圖,在decode完之后再顯示。

Uri uri;
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
    .setLocalThumbnailPreviewsEnabled(true)
    .build();

PipelineDraweeController controller = Fresco.newControllerBuilder()
    .setImageRequest(request)
    .setOldController(mSimpleDraweeView.getController())
    .build();
mSimpleDraweeView.setController(controller);

本地圖片復用

大部分的時候,一個圖片可能會對應有多個URI,比如:

  • 拍照上傳。本地圖片較大,上傳的圖片較小。上傳完成之后的圖片,有一個url,如果要加載這個url,可直接加載本地圖片。
  • 本地已經(jīng)有600x600尺寸的大圖了,需要顯示100x100的小圖

對于一個URI,image pipeline 會依次檢查內(nèi)存,磁盤,如果沒有從網(wǎng)絡下載。

而對于一個圖片的多個URI,image pipeline 會先檢查他們是否在內(nèi)存中。如果沒有任何一個是在內(nèi)存中的,會檢查是否在本地存儲中。如果也沒有,才會執(zhí)行網(wǎng)絡下載。

但凡有任何一個檢查發(fā)現(xiàn)在內(nèi)存或者在本地存儲中,都會進行復用。列表順序就是要顯示的圖片的優(yōu)先順序。

使用時,創(chuàng)建一個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);

自定義 DataSource Supplier

為了更好的靈活性,你可以在創(chuàng)建Drawee controller時自定義DataSource Supplier。你可以以FirstAvailiableDataSourceSupplier,IncreasingQualityDataSourceSupplier為例自己實現(xiàn)DataSource Supplier或者以AbstractDraweeControllerBuilder為例將多個DataSource Supplier根據(jù)需求組合在一起。