摘要:但是當(dāng)我們需要更換圖片加載庫(kù)時(shí),卻發(fā)現(xiàn)這是一項(xiàng)艱巨的任務(wù)。高斯模糊效果是一個(gè)很耗性能的一個(gè)操作,很容易引起,所以在使用時(shí)應(yīng)將盡可能的縮小,同時(shí)選擇一個(gè)穩(wěn)定的實(shí)現(xiàn)方式。
在APP開發(fā)過程,圖片加載是一個(gè)不可或缺的模塊,一般我們都會(huì)使用比較成熟的開源庫(kù),如Fresco, ImageLoader, Glide等。 這些開源庫(kù)也都提供了簡(jiǎn)潔的使用方式,使我們可以快速完成圖片的加載過程。但是當(dāng)我們需要更換圖片加載庫(kù)時(shí),卻發(fā)現(xiàn)這是一項(xiàng)艱巨的任務(wù)。
目標(biāo)為了減小更換圖片加載庫(kù)的的工作量,我們需要降低圖片加載庫(kù)的耦合度,通過封裝的形式為應(yīng)用提供統(tǒng)一的使用接口。
本次封裝僅包含圖片加載庫(kù)的基本功能:初始化圖片加載庫(kù)
顯示圖片(圓角,圓形等樣式)
下載圖片
從結(jié)構(gòu)圖中我們可以看出,更換圖片加載庫(kù)只需要設(shè)置相應(yīng)的mLoaderInstance即可。
使用ImageLoaderManager.getInstance().init(getApplicationContext(), new FrescoInstance()); ImageLoaderManager.getInstance().displayImage("http://t.cn/RTRKzUt", image);說明
ImageLoaderManager提供了統(tǒng)一的接口,至于初始化中怎樣配置,只需要在相應(yīng)的Instance中去實(shí)現(xiàn)即可;
如需要封裝其他的圖片加載庫(kù),如Picasso, 只需要實(shí)現(xiàn)ImageLoaderInstance接口即可;
圖片加載庫(kù)在加載圖片時(shí)都提供了配置項(xiàng),如設(shè)置占位圖,失敗圖,邊框等。這些與View相關(guān)的配置是以自定義View的形式實(shí)現(xiàn)的;
由于Fresco加載的目標(biāo)是SimpleDraweeView,其他的圖片加載庫(kù)為ImageView, 為了提供統(tǒng)一的目標(biāo)對(duì)象,我們使用繼承自GenericDraweeView(SimpleDraweeView的父類)的WrapImage作為加載目標(biāo)。如果你不需要封裝Fresco, 那么可將WrapImageView的父類改成ImageView;
項(xiàng)目中提供了高斯模糊的幾種實(shí)現(xiàn)方案:Fresco自帶,F(xiàn)astBlur算法,RenderScript。具體的效果可運(yùn)行項(xiàng)目進(jìn)行查看。說一下這幾種方案使用過程中的感受:
項(xiàng)目地址Fresco提供的高斯模糊效果算是這3種方案中最好的,穩(wěn)定,顯示效果細(xì)膩;
FastBlur算法,雖然可通過縮放Bitmap來提高轉(zhuǎn)換效率,但顯示效果不如Fresco;
RenderScript雖然是Android提供的,但是使用體驗(yàn)并不好,在ImageLoader中使用,模糊效果顯示異常。在Glide中使用時(shí),對(duì)Bitmap縮放后模糊效果顯示異常。同時(shí)由于有些廠商對(duì)這一功能進(jìn)行了閹割,使用時(shí)需要添加so庫(kù),為了版本的兼容性,還需要引入v8的兼容包。
高斯模糊效果是一個(gè)很耗性能的一個(gè)操作,很容易引起OOM,所以在使用時(shí)應(yīng)將Bitmap盡可能的縮小,同時(shí)選擇一個(gè)穩(wěn)定的實(shí)現(xiàn)方式。
ImageloaderManager
總結(jié)此項(xiàng)目旨在介紹這種封裝的思想,至于細(xì)節(jié)方面就交給各位小伙伴了,畢竟很少有APP會(huì)同時(shí)使用多個(gè)圖片加載庫(kù)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70900.html
閱讀 1337·2023-04-26 01:03
閱讀 1974·2021-11-23 09:51
閱讀 3337·2021-11-22 15:24
閱讀 2691·2021-09-22 15:18
閱讀 1042·2019-08-30 15:55
閱讀 3554·2019-08-30 15:54
閱讀 2305·2019-08-30 15:53
閱讀 2419·2019-08-30 15:44