ImageLoadingListener.java
圖片加載各種時(shí)刻的回調(diào)接口惋鹅,可在圖片加載的某些點(diǎn)做監(jiān)聽顽染。
包括開始加載(onLoadingStarted)踩蔚、加載失敗(onLoadingFailed)、加載成功(onLoadingComplete)睛榄、取消加載(onLoadingCancelled)四個(gè)回調(diào)函數(shù)户敬。
SimpleImageLoadingListener.java
實(shí)現(xiàn)ImageLoadingListener接口落剪,不過各個(gè)函數(shù)都是空實(shí)現(xiàn)睁本,表示不在 Image 加載過程中做任何回調(diào)監(jiān)聽。
ImageLoader.displayImage(…)函數(shù)中當(dāng)入?yún)istener為空時(shí)的默認(rèn)值
ImageLoadingProgressListener.java
Image 加載進(jìn)度的回調(diào)接口忠怖。其中抽象函數(shù)
void onProgressUpdate(String imageUri, View view, int current, int total)
會(huì)在獲取圖片存儲(chǔ)到文件系統(tǒng)時(shí)被回調(diào)呢堰。其中total表示圖片總大小,為網(wǎng)絡(luò)請求結(jié)果Response Header中content-length字段凡泣,如果不存在則為 -1枉疼。
PauseOnScrollListener.java
可在 View 滾動(dòng)過程中暫停圖片加載的 Listener,實(shí)現(xiàn)了 OnScrollListener 接口鞋拟。
它的好處是防止?jié)L動(dòng)中不必要的圖片加載往衷,比如快速滾動(dòng)不希望滾動(dòng)中的圖片加載。在 ListView 或 GridView 中 item 加載圖片最好使用它严卖,簡單的一行代碼:
gridView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), false, true));
主要的成員變量:
pauseOnScroll 觸摸滑動(dòng)(手指依然在屏幕上)過程中是否暫停圖片加載席舍。
pauseOnFling 甩指滾動(dòng)(手指已離開屏幕)過程中是否暫停圖片加載。
externalListener 自定義的 OnScrollListener 接口哮笆,適用于 View 原來就有自定義 OnScrollListener 情況設(shè)置来颤。
實(shí)現(xiàn)原理:
重寫onScrollStateChanged(…)函數(shù)判斷不同的狀態(tài)下暫停或繼續(xù)圖片加載稠肘。
OnScrollListener.SCROLL_STATE_IDLE表示 View 處于空閑狀態(tài)福铅,沒有在滾動(dòng),這時(shí)候會(huì)加載圖片项阴。
OnScrollListener.SCROLL_STATE_TOUCH_SCROLL表示 View 處于觸摸滑動(dòng)狀態(tài)滑黔,手指依然在屏幕上,通過pauseOnScroll變量確定是否需要暫停圖片加載环揽。這種時(shí)候大都屬于慢速滾動(dòng)瀏覽狀態(tài)略荡,所以建議繼續(xù)圖片加載。
OnScrollListener.SCROLL_STATE_FLING表示 View 處于甩指滾動(dòng)狀態(tài)歉胶,手指已離開屏幕汛兜,通過pauseOnFling變量確定是否需要暫停圖片加載。這種時(shí)候大都屬于快速滾動(dòng)狀態(tài)通今,所以建議暫停圖片加載以節(jié)省資源粥谬。