RecyclerView列表停止滚动时,设置定时任务

小而精的学习

        mListView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                    restartDismissTimer(HiSingPlayConstants.HI_SING_PANEL_DISMISS_DELAY);
                }
            }
        });

 

    public void restartDismissTimer(long dismissSecondsDelay) {
        unsubscribeDismiss();
        mDisposable = Observable.timer(dismissSecondsDelay, TimeUnit.SECONDS)
                .observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {
                        dismiss();
                    }
                });
    }

 

解释:

当 `RecyclerView` 停止滚动时,启动一个延迟隐藏面板的定时器。
具体逻辑如下:

1. `addOnScrollListener` 监听滚动状态;
2. 当滚动停止SCROLL_STATE_IDLE时,调用restartDismissTimer设置定时任务;
3. 定时任务会在指定时间后执行 dismiss(),隐藏当前面板。

 

posted @ 2025-06-05 16:34  touchmore  阅读(19)  评论(0)    收藏  举报