Android ViewPager 2-如何检测用户发起的页面更改

ehxuflar  于 2023-05-21  发布在  Android
关注(0)|答案(2)|浏览(164)

我有ViewPager2回调设置,但需要检测用户发起的页面更改何时完成。回调不会区分用户启动和代码启动。这是我现在拥有的:

ViewPager2.OnPageChangeCallback swipeListener = new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageSelected(int position) {
            //I want to run code only if user initiated this page change
            //but this runs whether user initiated or code initiated
        }
}

通过代码完成的页面更改:

viewPager.setCurrentItem(targetSlide);

docs for ViewPager2显示了一个isUserInputEnabled()方法,它告诉您用户是否“可以”手动更改页面,但我需要检测用户是否“确实”启动了页面更改。

eyh26e7m

eyh26e7m1#

您可以在registerOnPageChangeCallback中使用isFakeDraging来检测拖动是否是假的或由用户发起的。
如果正在进行假拖动,则返回true。

...onPageScrolledonPageScrolled(int position, float positionOffset, int positionOffsetPixels){
    if(isFakeDragging)
        {// fake scroll}
    else{// user scroll}
}
j7dteeu8

j7dteeu82#

可以覆盖viewpager2来检测页面更改,如下所示:

viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageSelected(int position) {
        }
    });

有关更多信息,请查看Github上的这个仓库:
https://github.com/aeonSolutions/aeonlabs-open-software-catalogue

相关问题