Glide結合Recyclerview(Listview)實現列表滑動的時候圖片不載入,滑動停止的時候載入
阿新 • • 發佈:2019-01-29
首先:glide 的方法,發現有兩個方法:
Glide.with(context).resumeRequests();
Glide.with(context).pauseRequests();
根據方法名稱不難理解:
其中第一個是恢復圖片的請求載入,第二個是暫停圖片的請求載入。
我們先看RecyclerView的監聽:
我們來看看 OnScrollListener 裡面的兩個方法:
onScrolled(RecyclerView recyclerView, int dx, int dy)
onScrollStateChanged(RecyclerView recyclerView, int newState
其中我們需要關注第二個方法。第二個引數 newState 就是滑動的狀態,有三個:
SCROLL_STATE_IDLE 停止滑動。(恢復)
SCROLL_STATE_DRAGGING 當螢幕滾動且使用者使用的觸碰或手指還在螢幕上(停止)
SCROLL_STATE_SETTLING 由於使用者的操作,螢幕產生慣性滑動。(停止)
我們再來看listview的:
SCROLL_STATE_IDLE 滑動停止
SCROLL_STATE_FLING 正在滾動
SCROLL_STATE_TOUCH_SCROLL 網上的資料給的解釋是手接觸 Listview 會觸動一次
好了,這些清楚了,只需要在OnScrollStateChanged 中判斷即可:
@Override
public void onScrollStateChanged(AbsListView view, int newState) {
switch (newState){
case SCROLL_STATE_IDLE:
//滑動停止
try {
if(getContext() != null) Glide.with(getContext()).resumeRequests();
}
catch (Exception e) {
e.printStackTrace();
}
break;
case SCROLL_STATE_FLING:
//正在滾動
try {
if(getContext() != null) Glide.with(getContext()).pauseRequests();
}
catch (Exception e) {
e.printStackTrace();
}
break;
}
}
–>路要一步一步走,記住自己走過的路,不再犯同樣的錯誤,才是真正的成長!歡迎指點、交流。<–