本教程內容來源于:http://fresco-cn.org
采用 知識共享 署名 4.0 國際 許可協(xié)議 進行許可
注意: 本頁提及的API僅是初步設計,后續(xù)可能變動
Fresco 支持漸進式的網絡JPEG圖。在開始加載之后,圖會從模糊到清晰漸漸呈現(xiàn)。
你可以設置一個清晰度標準,在未達到這個清晰度之前,會一直顯示占位圖。
漸進式JPEG圖僅僅支持網絡圖。
配置Image pipeline時 需要傳遞一個 ProgressiveJpegConfig. 的實例。
這個實例需要完成兩個事情:
下面的實例中,為了實現(xiàn)節(jié)省CPU,并不是每個掃描都進行解碼。
注意:
getNextScanNumberToDecode, 等待掃描值大于返回值,才有可能進行解碼。假設,隨著下載的進行,下載完的掃描序列如下: 1, 4, 5, 10。那么:
getNextScanNumberToDecode返回為2, 因為初始時,解碼的掃描數為0。ProgressiveJpegConfig pjpegConfig = new ProgressiveJpegConfig() {
@Override
public int getNextScanNumberToDecode(int scanNumber) {
return scanNumber + 2;
}
public QualityInfo getQualityInfo(int scanNumber) {
boolean isGoodEnough = (scanNumber >= 5);
return ImmutableQualityInfo.of(scanNumber, isGoodEnough, false);
}
}
ImagePipelineConfig config = ImagePipelineConfig.newBuilder()
.setProgressiveJpegConfig(pjpeg)
.build();
除了自己實現(xiàn)ProgressiveJpegConfig, 也可以直接使用SimpleProgressiveJpegConfig.
目前,我們必須顯式地在加載時,允許漸進式JPEG圖片加載。
Uri uri;
ImageRequest request = ImageRequestBuilder
.newBuilderWithSource(uri)
.setProgressiveRenderingEnabled(true)
.build();
PipelineDraweeController controller = Fresco.newControllerBuilder()
.setImageRequest(requests)
.setOldController(mSimpleDraweeView.getController())
.build();
mSimpleDraweeView.setController(controller);
我們希望在后續(xù)的版本中,在setImageURI方法中可以直接支持漸進式圖片加載。