1 正在滚动的时候停止加载图片

2 滚动到顶部和底部的时候,加载图片

3 滑动速度降低到一定速率的时候,加载图片

4 到底部时候加载更多

/** * Created by android on 2018/1/9. * * 快速滑动时候,停止加载图片, 加载更多 */public abstract class SmartRecyclerViewScrollLsnr extends RecyclerView.OnScrollListener {    private static final String TAG = "SmartRecyclerViewScroll";    private Context mContext;    private int previousFirstVisibleItem = 0;    private long previousEventTime = 0;    private double speed = 0;    private LinearLayoutManager mLinearLayoutManager;    public SmartRecyclerViewScrollLsnr(Context context) {        mContext = context;    }    @Override    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {//        if (newState == RecyclerView.SCROLL_STATE_IDLE) {//            resumeImageLoad();//        }    }    @Override    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {        if (!recyclerView.canScrollVertically(1)){//不能再向上,滑动到底部            resumeImageLoad();            onLoadMore();            return;        }        if (!recyclerView.canScrollVertically(-1)){//不能再向下            resumeImageLoad();            return;        }        //速度降低时候,也加载        if (NullUtil.isNull(mLinearLayoutManager)){            mLinearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();        }        int firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();        if (previousFirstVisibleItem != firstVisibleItem) {            long currTime = System.currentTimeMillis();            long timeToScrollOneElement = currTime - previousEventTime;            speed = ((double) 1 / timeToScrollOneElement) * 1000;            previousFirstVisibleItem = firstVisibleItem;            previousEventTime = currTime;            if (speed > 6) {                pauseImageLoad();            } else {                resumeImageLoad();            }            Log.d(TAG, "Speed: " + speed + " elements/second");        }    }    private void pauseImageLoad() {        try {            if (mContext != null) Glide.with(mContext).pauseRequests();        } catch (Exception e) {            e.printStackTrace();        }    }    private void resumeImageLoad() {        try {            if (mContext != null && Glide.with(mContext).isPaused()) Glide.with(mContext).resumeRequests();        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 提供一个抽闲方法,在Activity中监听到这个EndLessOnScrollListener     * 并且实现这个方法     * */    public abstract void onLoadMore();}

更多相关文章

  1. Android(安卓)浅析 ContentProvider (四) 启动原理
  2. Android(安卓)滑动效果入门篇(一)—— ViewFlipper
  3. android --- Afianl框架里面的FinalBitmap加载网络图片
  4. [Android算法] bitmap 将图片压缩到指定的大小
  5. Android(安卓)ViewPager事件滑动监听修改
  6. 将图片存储到Sqlite和取出
  7. Android(安卓)绘制一个Loading动画__向图片中缓慢填充颜色,从而
  8. Android(安卓)如何实现欢迎界面(Splash Screen)
  9. Android(安卓)OKHttp3的使用和下载/上传图片

随机推荐

  1. animated-rotate的用法
  2. Android(安卓)selector 及 Shape
  3. EditText小总结
  4. android manifest.xml中元素含义android
  5. 【Android】Android(安卓)代码判断是否获
  6. 最新Android(安卓)ADT, SDK, SDK_tool等
  7. Android(安卓)PagerTabStrip和PagerTitle
  8. [Android]"@string/hello"和"你好"的区别
  9. Android(安卓)布局属性详解
  10. RelativeLayout 重要的属性