国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

解耦圖片加載庫

newtrek / 2651人閱讀

摘要:但是當我們需要更換圖片加載庫時,卻發(fā)現(xiàn)這是一項艱巨的任務。高斯模糊效果是一個很耗性能的一個操作,很容易引起,所以在使用時應將盡可能的縮小,同時選擇一個穩(wěn)定的實現(xiàn)方式。

在APP開發(fā)過程,圖片加載是一個不可或缺的模塊,一般我們都會使用比較成熟的開源庫,如Fresco, ImageLoader, Glide等。 這些開源庫也都提供了簡潔的使用方式,使我們可以快速完成圖片的加載過程。但是當我們需要更換圖片加載庫時,卻發(fā)現(xiàn)這是一項艱巨的任務。

目標

為了減小更換圖片加載庫的的工作量,我們需要降低圖片加載庫的耦合度,通過封裝的形式為應用提供統(tǒng)一的使用接口。

本次封裝僅包含圖片加載庫的基本功能:

初始化圖片加載庫

顯示圖片(圓角,圓形等樣式)

下載圖片

從結構圖中我們可以看出,更換圖片加載庫只需要設置相應的mLoaderInstance即可。

使用
ImageLoaderManager.getInstance().init(getApplicationContext(), new FrescoInstance());
ImageLoaderManager.getInstance().displayImage("http://t.cn/RTRKzUt", image);
說明

ImageLoaderManager提供了統(tǒng)一的接口,至于初始化中怎樣配置,只需要在相應的Instance中去實現(xiàn)即可;

如需要封裝其他的圖片加載庫,如Picasso, 只需要實現(xiàn)ImageLoaderInstance接口即可;

圖片加載庫在加載圖片時都提供了配置項,如設置占位圖,失敗圖,邊框等。這些與View相關的配置是以自定義View的形式實現(xiàn)的;

由于Fresco加載的目標是SimpleDraweeView,其他的圖片加載庫為ImageView, 為了提供統(tǒng)一的目標對象,我們使用繼承自GenericDraweeView(SimpleDraweeView的父類)的WrapImage作為加載目標。如果你不需要封裝Fresco, 那么可將WrapImageView的父類改成ImageView;

項目中提供了高斯模糊的幾種實現(xiàn)方案:Fresco自帶,F(xiàn)astBlur算法,RenderScript。具體的效果可運行項目進行查看。說一下這幾種方案使用過程中的感受:


Fresco提供的高斯模糊效果算是這3種方案中最好的,穩(wěn)定,顯示效果細膩;

FastBlur算法,雖然可通過縮放Bitmap來提高轉換效率,但顯示效果不如Fresco;

RenderScript雖然是Android提供的,但是使用體驗并不好,在ImageLoader中使用,模糊效果顯示異常。在Glide中使用時,對Bitmap縮放后模糊效果顯示異常。同時由于有些廠商對這一功能進行了閹割,使用時需要添加so庫,為了版本的兼容性,還需要引入v8的兼容包。

高斯模糊效果是一個很耗性能的一個操作,很容易引起OOM,所以在使用時應將Bitmap盡可能的縮小,同時選擇一個穩(wěn)定的實現(xiàn)方式。

項目地址

ImageloaderManager

總結

此項目旨在介紹這種封裝的思想,至于細節(jié)方面就交給各位小伙伴了,畢竟很少有APP會同時使用多個圖片加載庫。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70900.html

相關文章

發(fā)表評論

0條評論

newtrek

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<