国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Fresco 使用要點(diǎn)

2019-11-09 15:49:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

研究Fresco有段時(shí)間了,在內(nèi)存使用上的確要比UIL的好挺多,但同時(shí)Fresco的使用也些許復(fù)雜,還有很多陷阱。

除了參看官方文檔外,還需要注意一下問(wèn)題:

一、配置

1、ImagePipelineConfig 要設(shè)置 setDownsampleEnabled(true),以打開(kāi)對(duì)png等圖片的自動(dòng)縮放特性(縮放必須要設(shè)置ResizeOptions);

      setResizeAndRotateEnabledForNetwork(),已對(duì)網(wǎng)絡(luò)圖也能進(jìn)行resize處理,減少內(nèi)存開(kāi)銷(xiāo);

      沒(méi)有png等透明圖片的顯示要求,setBitmapsConfig設(shè)置為 RGB_565,減少內(nèi)存開(kāi)銷(xiāo);

2、如果有瀏覽本地圖片的,并且一屏上顯示多張(> 9),要將PoolFactory的flexByteArrayPoolParams的PoolParam的 maxSizeHardCap值設(shè)為 8MB以上。

      默認(rèn)是每個(gè)讀取線程只有4MB的byte緩存池,但現(xiàn)在很多圖片的文件大小都超過(guò)8MB,在同時(shí)加載多種圖片時(shí),容易出現(xiàn)緩存池大小不夠,導(dǎo)致加載失敗;

二、ImageRequest

1、加載文件路徑不要直接直接使用 Uri.parse(),而要使用 Uri.fromFIle()。parse不會(huì)轉(zhuǎn)義文件路徑的unicode字符,導(dǎo)致加載失敗;

2、ResizeOptions一定盡量要設(shè)置,并且是ImageView所顯示的大小,這樣可以盡可能的縮減加載的圖像尺寸,節(jié)約內(nèi)存;

3、加載到BitmapCache的圖片都是帶Resize的,如果兩處加載同一個(gè)Uri,但ResizeOptions不同的話,那也是當(dāng)做兩張圖片;

4、GIF圖閃動(dòng):Fresco是不在內(nèi)存中緩存GIF圖的,每次顯示都是重新解碼,閃動(dòng)可以設(shè)置ImageDecodeOption中的setDecodePReviewFrame(true),并不設(shè)置placeholder的圖片;

三、緩存

1、直接獲得內(nèi)存緩存的Bitmap:

[java] view plain copy 在CODE上查看代碼片DataSource<CloseableReference<CloseableImage>> dataSource =          Fresco.getImagePipeline().fetchImageFromBitmapCache(request, null);  CloseableReference<CloseableImage> imageReference = null;  try {      imageReference = dataSource.getResult();      if (imageReference != null) {          CloseableImage image = imageReference.get();          // do something on this      }  } finally {      dataSource.close();      CloseableReference.closeSafely(imageReference);  }  

四、預(yù)加載

使用預(yù)加載時(shí),要預(yù)加載到內(nèi)存并解碼的,要注意ResizeOptions,和照片旋轉(zhuǎn)照成的長(zhǎng)寬對(duì)調(diào)。

1、預(yù)緩存到本地文件,但不加載到內(nèi)存,自動(dòng)忽略ResizeOptions:

[java] view%20plain copy Fresco.getImagePipeline()                  .prefetchToDiskCache(imageRequest, null)  

2、預(yù)加載到內(nèi)存并解碼(不需要立即拿到結(jié)果的),受ResizeOptions影響:

[java] view%20plain copy Fresco.getImagePipeline()                  .prefetchToBitmapCache(imageRequest, null)  3、加載一張圖片,并緩存到內(nèi)存,返回解碼的結(jié)果,受ResizeOptions影響:

[java] view%20plain copy 派生到我的代碼片Fresco.getImagePipeline()                  .fetchDecodedImage(imageRequest, null)  但要注意,返回的DataSource是不能直接拿到結(jié)果,需要subscribe DataSource

4、


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 奈曼旗| 崇阳县| 和龙市| 廊坊市| 库伦旗| 瑞昌市| 吉隆县| 长治市| 乐平市| 清徐县| 永顺县| 河西区| 壤塘县| 兰州市| 灵石县| 元阳县| 凤庆县| 民和| 丹江口市| 宝坻区| 陇川县| 潮州市| 通化县| 鸡泽县| 板桥市| 陆丰市| 泊头市| 大兴区| 衡阳县| 华亭县| 九江市| 云梦县| 枣强县| 河西区| 安康市| 香格里拉县| 华蓥市| 丰镇市| 福州市| 三明市| 和田市|