實(shí)現(xiàn)微信圖片加載顯示進(jìn)度的效果-LoadingProgress

分析

從網(wǎng)絡(luò)上加載圖片是一種耗時(shí)的操作,當(dāng)加載的圖片體積越大,消耗的時(shí)間也會(huì)更長(zhǎng)。向ImageView添加一個(gè)進(jìn)度條的話,可以起到一定的效果。而在我們Android里面,據(jù)我了解,想實(shí)現(xiàn)ImageView添加進(jìn)度條的方法有兩種:
1.新建一個(gè)類extends ImageView,在draw()方法里面畫進(jìn)度。
2.可以在你的ImageView外圍添加RelativeLayout,然后,在里面加多一個(gè)ProgressBar。

LoadingProgress用的都不是以上兩種方法。而是采用了extends Drawable的形式,然后注入到ImageView圖層上面。

對(duì)比

先從上面第二種來(lái)說(shuō),在外圍嵌套R(shí)elativeLayout再放多一個(gè)ProgressBar,如果在ListView里面這樣來(lái)寫的話,性能絕對(duì)會(huì)受到影響,因?yàn)槎嗬L制兩個(gè)控件,Android就要多點(diǎn)耗時(shí)時(shí)間,內(nèi)存也會(huì)占用。
第一種和我的那種對(duì)比的話,我的那種可能會(huì)相對(duì)占用一點(diǎn)內(nèi)存,但是相對(duì)的,靈活性和擴(kuò)展性就高了,為什么這樣說(shuō)呢?比如,你有時(shí)候需要用到手勢(shì)縮放這種Extends ImageView的控件,總不可能繼承與手勢(shì)縮放,再重新封裝代碼對(duì)吧?
我的只要是繼承于ImageView和可以監(jiān)聽(tīng)到下載圖片進(jìn)度的回調(diào),都可以實(shí)現(xiàn)像QQ和微信那種加載進(jìn)度條,可以動(dòng)態(tài)的調(diào)整圓環(huán)大小和字體大小,顏色和其他的。

附上效果圖

這里寫圖片描述

用法

    //用法也是挺簡(jiǎn)單的,只需要幾行代碼
    CircleProgress progress = new CircleProgress.Builder()
    
    // .....從建造者里面設(shè)置你的屬性,園底層顏色,進(jìn)度顏色,字體大小顏色等..
                        .build();//返回CircleProgress


    /**********
    * 如果你不想圓形進(jìn)度條,你可以使用其他的進(jìn)度條
    * 比如:RectangleProgress(長(zhǎng)形進(jìn)度條)
    * RotateProgress(實(shí)現(xiàn)自動(dòng)旋轉(zhuǎn)的進(jìn)度條)
    * LevelProgress(這個(gè)我也不好解析,類似效果圖水杯的那種效果)
    */
    //對(duì)于使用Fresco框架的
    progress.injectFresco(target);//SimpledraweeView
    //除了Fresco框架其他的,均使用這個(gè)方法
    progress.inject(target);//target為你的ImageView
    //接著加載你的圖片把

</t></t>最后,你需要監(jiān)聽(tīng)到圖片下載進(jìn)度變化的事件,Fresco框架的不需要。

在你的進(jìn)度回調(diào)方法里面:

    @Override
    public void update(long current,long total){
        //當(dāng)前進(jìn)度值
        progress.setLevel((int)current);
        //最大進(jìn)度值
        progress.setMaxValue(total);
    }

對(duì)于使用Glide和Picasso框架的人來(lái)說(shuō),獲取進(jìn)度變化的回調(diào)可能會(huì)有點(diǎn)困難,不過(guò)可參考我的DEMO,使用Okhttp3攔截進(jìn)度事件,不過(guò)也有點(diǎn)問(wèn)題,特別大的圖片加載不出來(lái),我也不太了解OKhttp3進(jìn)度獲取,希望有人能指點(diǎn)一下我!

Github

https://github.com/peng8350/LoadingProgress
歡迎大家來(lái)star一下我,我是第一次寫開源項(xiàng)目,難免會(huì)有一些問(wèn)題,希望大家可以提出來(lái)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容