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

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

配置Image Pipeline

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

對于大多數(shù)的應(yīng)用,F(xiàn)resco的初始化,只需要以下一句代碼:

Fresco.initialize(context);

對于那些需要更多進一步配置的應(yīng)用,我們提供了ImagePipelineConfig

以下是一個示例配置,列出了所有可配置的選項。幾乎沒有應(yīng)用是需要以下這所有的配置的,列出來僅僅是為了作為參考。

ImagePipelineConfig config = ImagePipelineConfig.newBuilder()
    .setBitmapMemoryCacheParamsSupplier(bitmapCacheParamsSupplier)
    .setCacheKeyFactory(cacheKeyFactory)
    .setEncodedMemoryCacheParamsSupplier(encodedCacheParamsSupplier)
    .setExecutorSupplier(executorSupplier)
    .setImageCacheStatsTracker(imageCacheStatsTracker)
    .setMainDiskCacheConfig(mainDiskCacheConfig)
    .setMemoryTrimmableRegistry(memoryTrimmableRegistry) 
    .setNetworkFetchProducer(networkFetchProducer)
    .setPoolFactory(poolFactory)
    .setProgressiveJpegConfig(progressiveJpegConfig)
    .setRequestListeners(requestListeners)
    .setSmallImageDiskCacheConfig(smallImageDiskCacheConfig)
    .build();
Fresco.initialize(context, config);

請記得將配置好的ImagePipelineConfig 傳遞給 Fresco.initialize! 否則仍舊是默認配置。

關(guān)于Supplier

許多配置的Builder都接受一個Supplier 類型的參數(shù)而不是一個配置的實例。

創(chuàng)建時也許有一些麻煩,但這帶來更多的利好:這允許在運行時改變創(chuàng)建行為。以內(nèi)存緩存為例,每隔5分鐘就可檢查一下Supplier,根據(jù)實際情況返回不同類型。

如果你需要動態(tài)改變參數(shù),那就是用Supplier每次都返回同一個對象。

Supplier<X> xSupplier = new Supplier<X>() {
  public X get() {
    return new X(xparam1, xparam2...);
  }
);
// when creating image pipeline
.setXSupplier(xSupplier);

線程池

Image pipeline 默認有3個線程池:

  1. 3個線程用于網(wǎng)絡(luò)下載
  2. 兩個線程用于磁盤操作: 本地文件的讀取,磁盤緩存操作。
  3. 兩個線程用于CPU相關(guān)的操作: 解碼,轉(zhuǎn)換,以及后處理等后臺操作。

對于網(wǎng)絡(luò)下載,你可以定制網(wǎng)絡(luò)層的操作,具體參考:自定義網(wǎng)絡(luò)層加載.

對于其他操作,如果要改變他們的行為,傳入一個ExecutorSupplier即可。

內(nèi)存緩存的配置

內(nèi)存緩存和未解碼的內(nèi)存緩存的配置由一個Supplier控制,這個Supplier返回一個[MemoryCacheParams](../javadoc/reference/com/facebook/imagepipeline/cache/MemoryCacheParams.html#MemoryCacheParams(int, int, int, int, int)) 對象用于內(nèi)存狀態(tài)控制。

配置磁盤緩存

你可使用Builder模式創(chuàng)建一個 DiskCacheConfig:

DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder()
   .set....
   .set....
   .build()

// when building ImagePipelineConfig
.setMainDiskCacheConfig(diskCacheConfig)

緩存統(tǒng)計

如果你想統(tǒng)計緩存的命中率,你可以實現(xiàn)ImageCacheStatsTracker, 在這個類中,每個緩存時間都有回調(diào)通知,基于這些事件,可以實現(xiàn)緩存的計數(shù)和統(tǒng)計。

上一篇:一些陷阱下一篇:關(guān)鍵概念