Glide结合Recyclerview(Listview)实现列表滑动的时候图片不加载,滑动停止的时候加载

首先: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;  

        }  

    }  

–>路要一步一步走,记住自己走过的路,不再犯同样的错误,才是真正的成长!欢迎指点、交流。<–

你可能感兴趣的:(原创文章)