滚动中禁止图片加载,无疑要在滚动事件(onScrollStateChanged)中做对应的操作。
recycleview的滚动中有三种状态:
状态为0时:当前屏幕停止滚动; //需要加载图片
状态为1时:屏幕在滚动 且 用户仍在触碰或手指还在屏幕上; //禁止加载图片
状态为2时:随用户的操作,屏幕上产生的惯性滑动; //禁止加载图片
这样思路非常清晰,看代码
@Override
public void onScrollStateChanged(int state) {
super.onScrollStateChanged(state);
if (state == RecyclerView.SCROLL_STATE_DRAGGING || state == RecyclerView.SCROLL_STATE_SETTLING) {//滚动中和惯性滑动
sIsScrolling = true;
Glide.with(getContext()).pauseRequests(); //禁止加载图片
} else if (state == RecyclerView.SCROLL_STATE_IDLE) { //停止滚动
if (sIsScrolling == true) {
Glide.with(getContext()).resumeRequests(); //需要加载图片
}
sIsScrolling = false;
}
}
如果采用其他图片加载控件也是一样的原理,如imageload 禁止使用imageLoader.pause(); 加载使用 imageLoader.resume();