Android教程2020 - RecyclerView獲取滑動距離


獲取RecyclerView滑動的距離。

Android教程2020 - 系列總覽

本文鏈接
本文演示如何獲取RecyclerView的滑動距離。

要實現這個功能,需要給RecyclerView添加滑動時監聽RecyclerView.OnScrollListener

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        Log.d(TAG, "onScrolled: dy: " + dy);
    }
});

RecyclerView.OnScrollListener是一個抽象類,我們可以選擇性地實現它的方法。
onScrolled方法的dy表示的是每一次y方向上的相對滑動距離。向下滑動是正數,向上滑動是負數。

可以添加一個變量來累計滑動的距離。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    int mmRvScrollY = 0; // 列表滑動距離

    @Override
    public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        mmRvScrollY += dy;
        Log.d(TAG, "onScrolled: mmRvScrollY: " + mmRvScrollY + ", dy: " + dy);
    }
});

每次滑動都累加到mmRvScrollY中。
打印log

onScrolled: mmRvScrollY: 3167, dy: 3
onScrolled: mmRvScrollY: 3169, dy: 2
onScrolled: mmRvScrollY: 3167, dy: -2
onScrolled: mmRvScrollY: 3155, dy: -12

建議同時給adapter加個registerAdapterDataObserver,監聽插入/刪除/移動,自己加減前面記錄的dy滾動值。

工程放這里: https://github.com/AnRFDev/Tutorial2020

相關閱讀
RecyclerView - 使用入門
RecyclerView點擊事件 - 如何設置點擊事件
RecyclerView示例 - 實際使用
RecyclerView顯示多種item


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM