Android Recyclerview 监听滑动状态和滑动距离

计算滑动距离

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    
    
            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
    
    
                super.onScrolled(recyclerView, dx, dy);
                Log.d(TAG,getScollYDistance()+"");
            }
});
    public int getScollYDistance() {
    
    
        LinearLayoutManager layoutManager = (LinearLayoutManager) rvHomeHouse.getLayoutManager();
        int position = layoutManager.findFirstVisibleItemPosition();
        View firstVisiableChildView = layoutManager.findViewByPosition(position);
        int itemHeight = firstVisiableChildView.getHeight();
        return (position) * itemHeight - firstVisiableChildView.getTop();
    }

监听滑动状态

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    
    
            @Override
            public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
    
    
                super.onScrollStateChanged(recyclerView, newState);
                switch (newState){
    
    
                    case RecyclerView.SCROLL_STATE_DRAGGING:
                        Log.d("wangrui","正在拖拽");
                        break;
                    case RecyclerView.SCROLL_STATE_IDLE:
                        Log.d("wangrui","滑动停止");
                        break;
                    case RecyclerView.SCROLL_STATE_SETTLING:
                        Log.d("wangrui","惯性滑动中");
                        break;
                }
            }
                        @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
    
    
                super.onScrolled(recyclerView, dx, dy);
                /*每次滑动必定调用这里*/
            }

猜你喜欢

转载自blog.csdn.net/qq_27494201/article/details/128670196