Android圖片加載-Glide4.0框架封裝

基于現(xiàn)有項目存在大量高清美圖展示的模塊陋率,所以在使用并對比了Glide和fresco的加載效果及使用體驗后定下來的,兩個框架都非常優(yōu)秀但其側(cè)重點略有不同之所以會選擇Glide是因為本人挺喜歡Glide的API風格风罩,簡單方便而且不會涉及到自定義view.

Glide地址:https://bumptech.github.io/glide/

本次側(cè)重點會放在對應用的內(nèi)存管理上來,當然對于圖片的處理也是內(nèi)存管理相當重要的一部分.

先上效果圖

meitu_list.png
meitu_detail_0.png
meitu_detai_1.png
meitu_preview.png

使用步驟

Glide添加

compile('com.github.bumptech.glide:glide:4.6.1') {
        exclude group: "com.android.support"
    }
// glide kotlin 的工具包
kapt 'com.github.bumptech.glide:compiler:4.6.1'
compile "com.github.bumptech.glide:okhttp3-integration:4.5.0"
compile 'com.github.bumptech.glide:annotations:4.6.1'

封裝圖片加載類

目前只提供了簡單的封裝颂砸,當然你也可以根據(jù)項目需求繼續(xù)進行拓展

/**
 * Created by moment on 2018/2/6.
 */

class ImageLoad {

    open fun load(context: WeakReference<Context>, url: String?, image: ImageView?) {
        if (image == null) return
         // 具體圖片加載實現(xiàn)可以使用第三方框架加載,也可以自己實現(xiàn)其垄,
         這里提供Glide4.0的使用示例:
        var requestOptions = RequestOptions().centerCrop()
                .placeholder(R.drawable.default_banner)
                .error(R.drawable.default_banner)
                .transform(CenterCrop())
                .format(DecodeFormat.PREFER_RGB_565)
                .priority(Priority.LOW)
                .dontAnimate()
                .diskCacheStrategy(DiskCacheStrategy.RESOURCE)

        Glide.with(context.get()!!.applicationContext)
                .load(url)
                .apply(requestOptions)
                .into(object : DrawableImageViewTarget(image) {
                })
    }

    open fun load(context: WeakReference<Context>, url: String?, image: ImageView?, transformation: BitmapTransformation) {
        if (image == null) return
         // 具體圖片加載邏輯
    }

    open fun load(holder: Int, context: WeakReference<Context>, url: String, image: ImageView?, width: Int, height: Int) {
        if (image == null) return
        // 具體圖片加載邏輯
    }

    open fun loadCircle(context: WeakReference<Context>, url: String?, image: ImageView?, width_height: Int) {
        if (image == null) return
         // 具體圖片加載邏輯
    }

    open fun loadRound(context: WeakReference<Context>, url: String, image: ImageView?, width: Int, height: Int, round: Int) {
        if (image == null) return
         // 具體圖片加載邏輯
    }

    open fun clearCache(context: WeakReference<Context>) {
        // 強制清楚緩存,可以為內(nèi)存緩存也可以為硬盤緩存
        Glide使用示例:
        Glide.get(context.get()!!.applicationContext).clearMemory()
        System.gc()
    }

}

使用說明

// 加載圓形頭像
ImageLoad().loadCircle(WeakReference(mContext), remark.user_info.portrait, viewHolder.civ_avatar,40)

// 加載正常圖片
ImageLoad().load(WeakReference(mContext), news.image_1, holder.imageView, width, height)

// 加載圓角圖片
ImageLoad().loadRound(WeakReference(mContext), briefCard["icon"].toString(), holder.image, 5)

在列表加載圖片時會使應用的內(nèi)存上升卤橄,但Glide提供給我們一個API來減少在列表加載時會損耗不必要的內(nèi)存的方法绿满,以recyclerview 為例:

recyclerview.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
                super.onScrollStateChanged(recyclerView, newState)
                when (newState) {
                    2 -> { // SCROLL_STATE_FLING
                        Glide.with(activity.applicationContext).pauseRequests()
                    }
                    0 -> { // SCROLL_STATE_IDLE
                        Glide.with(activity.applicationContext).resumeRequests()
                    }
                    1 -> { // SCROLL_STATE_TOUCH_SCROLL
                        Glide.with(activity.applicationContext).resumeRequests()
                    }
                }

            }
        })

在列表滑動過程中我們可以調(diào)用pauseRequests方法來是圖片暫停加載,當滑動結(jié)束后再調(diào)用resumeRequests來恢復加載.當然要想降低應用內(nèi)存開銷的話也可以調(diào)用ImageLoad().clearCache(WeakReference(this@MainActivity.applicationContext))來清空Glide的內(nèi)存緩存

具體使用方法及使用細節(jié)詳見仿開眼視頻Android客戶端 歡迎大家多多star.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窟扑,一起剝皮案震驚了整個濱河市喇颁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嚎货,老刑警劉巖橘霎,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異殖属,居然都是意外死亡姐叁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門洗显,熙熙樓的掌柜王于貴愁眉苦臉地迎上來外潜,“玉大人,你說我怎么就攤上這事墙懂。” “怎么了扮念?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵损搬,是天一觀的道長。 經(jīng)常有香客問我柜与,道長巧勤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任弄匕,我火速辦了婚禮颅悉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘迁匠。我一直安慰自己剩瓶,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布城丧。 她就那樣靜靜地躺著延曙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亡哄。 梳的紋絲不亂的頭發(fā)上枝缔,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音蚊惯,去河邊找鬼愿卸。 笑死灵临,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的趴荸。 我是一名探鬼主播儒溉,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赊舶!你這毒婦竟也來了睁搭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤笼平,失蹤者是張志新(化名)和其女友劉穎园骆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寓调,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡锌唾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了夺英。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晌涕。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痛悯,靈堂內(nèi)的尸體忽然破棺而出余黎,到底是詐尸還是另有隱情,我是刑警寧澤载萌,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布惧财,位于F島的核電站,受9級特大地震影響扭仁,放射性物質(zhì)發(fā)生泄漏垮衷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一乖坠、第九天 我趴在偏房一處隱蔽的房頂上張望搀突。 院中可真熱鬧,春花似錦熊泵、人聲如沸仰迁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轩勘。三九已至,卻和暖如春怯邪,著一層夾襖步出監(jiān)牢的瞬間绊寻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澄步,地道東北人冰蘑。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像村缸,于是被迫代替她去往敵國和親祠肥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,285評論 25 707
  • 一梯皿、簡介 在泰國舉行的谷歌開發(fā)者論壇上仇箱,谷歌為我們介紹了一個名叫Glide的圖片加載庫,作者是bumptech东羹。這...
    天天大保建閱讀 7,488評論 2 28
  • 關(guān)于 Glide Glide是一個快速高效的Android圖片加載庫剂桥,注重于平滑的滾動。Glide提供了易用的AP...
    android的那點事閱讀 2,691評論 0 13
  • 開始注重養(yǎng)生属提。 男人在外权逗,應該以事業(yè)為主,在婚里冤议,總是承擔著一家之主的角色斟薇,所以他們年輕的時候,總是想著打拼事業(yè)恕酸,...
    股韻奇談閱讀 372評論 0 0
  • 我等著堪滨,一直在等著,等著你回來蕊温,等著與你再次相見袱箱,我想著,你是多么的好寿弱,無數(shù)個夜里夢著你犯眠,我想著按灶,你是多么的完美症革,...
    最愛幻想鄉(xiāng)閱讀 207評論 0 0