當我們使用Universal-Image-Loader在listview或者gridview中顯示圖片時,當快速滑動時,我們會看到圖片一閃一閃的,那么怎么處理這么問題呢?我們在源碼中找到了答案。
在源碼中,我們發現了一個類PauSEOnScrollListener,看類名我們知道,這是一個處理跟滑動有關的監聽器。而在它的介紹中有提到,當列表滾動是,可以暫停imageload任務,防止多余的加載!
我們在源碼中,也發現了這段代碼:
@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case OnScrollListener.SCROLL_STATE_IDLE: imageLoader.resume(); break; case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: if (pauseOnScroll) { imageLoader.pause(); } break; case OnScrollListener.SCROLL_STATE_FLING: if (pauseOnFling) { imageLoader.pause(); } break; } if (externalListener != null) { externalListener.onScrollStateChanged(view, scrollState); }}很明顯,關鍵代碼是imageLoader.pause();停止imageloader任務和加載和imageLoader.resume();恢復imageloader任務和加載所以只要我們在scrollListener的onScrollStateChanged中SCROLL_STATE_TOUCH_SCROLL 和 SCROLL_STATE_FLING調用imageLoader.pause();在SCROLL_STATE_IDLE狀態時,調用imageLoader.resume();即可。當然你也可以直接使用PauseOnScrollListener那么問題就解決了!
新聞熱點
疑難解答