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

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

配置Image Pipeline

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

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

Fresco.initialize(context);

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

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

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);

請(qǐng)記得將配置好的ImagePipelineConfig 傳遞給 Fresco.initialize! 否則仍舊是默認(rèn)配置。

關(guān)于Supplier

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

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

如果你需要?jiǎng)討B(tài)改變參數(shù),那就是用Supplier每次都返回同一個(gè)對(duì)象。

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

線程池

Image pipeline 默認(rèn)有3個(gè)線程池:

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

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

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

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

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

配置磁盤緩存

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

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

// when building ImagePipelineConfig
.setMainDiskCacheConfig(diskCacheConfig)

緩存統(tǒng)計(jì)

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

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