在APP開發過程,圖片加載是一個不可或缺的模塊,通常咱們都會使用比較成熟的開源庫,如Fresco, ImageLoader, Glide等。 這些開源庫也都提供了簡潔的使用方式,使咱們能夠快速完成圖片的加載過程。可是當咱們須要更換圖片加載庫時,卻發現這是一項艱鉅的任務。git
爲了減少更換圖片加載庫的的工做量,咱們須要下降圖片加載庫的耦合度,經過封裝的形式爲應用提供統一的使用接口。github
從結構圖中咱們能夠看出,更換圖片加載庫只須要設置相應的mLoaderInstance便可。算法
ImageLoaderManager.getInstance().init(getApplicationContext(), new FrescoInstance()); ImageLoaderManager.getInstance().displayImage("http://t.cn/RTRKzUt", image);
- Fresco提供的高斯模糊效果算是這3種方案中最好的,穩定,顯示效果細膩;
- FastBlur算法,雖然可經過縮放Bitmap來提升轉換效率,但顯示效果不如Fresco;
- RenderScript雖然是Android提供的,可是使用體驗並很差,在ImageLoader中使用,模糊效果顯示異常。在Glide中使用時,對Bitmap縮放後模糊效果顯示異常。同時因爲有些廠商對這一功能進行了閹割,使用時須要添加so庫,爲了版本的兼容性,還須要引入v8的兼容包。
高斯模糊效果是一個很耗性能的一個操做,很容易引發OOM,因此在使用時應將Bitmap儘量的縮小,同時選擇一個穩定的實現方式。ide
此項目旨在介紹這種封裝的思想,至於細節方面就交給各位小夥伴了,畢竟不多有APP會同時使用多個圖片加載庫。spa