如何制作圆形viewpager2?

How to make a circular view pager2?

如何在 java 中制作循环视图 pager2(无限滚动)?例如,我想从第 1 页转到第 100 页,同时向左滑动而不是停下来。

myViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            Log.d(CPAct,"onPageScrolled "+position);
        }

        @Override
        public void onPageSelected(int position) {
            super.onPageSelected(position);
            Log.d(CPAct,"onPageSelected Position: "+position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            super.onPageScrollStateChanged(state);
            Log.d(CPAct,"onPageScrollStateChanged  state: "+state);
          
            if (state == ViewPager2.SCROLL_STATE_IDLE) {
                if (myViewPager2.getCurrentItem() == 0)
                    myViewPager2.setCurrentItem(99, false);
                else if (myViewPager2.getCurrentItem() == 99) 
                    myViewPager2.setCurrentItem(0, false);
            }

我在设置适配器后在 initView() 中尝试了上面的代码,但它无法正常工作。例如,当我从第 2 页向左滑动时,它直接转到最后一页并跳过第 1 页。当我向右滑动到达最后一页并直接转到第 1 页时,也会发生同样的事情。我只是想做一个无限滚动而不跳过任何页面。

你应该 post Adapter 的代码,在那里你应该 return Integer.MAX_VALUEgetCount 并为绘图列表项引入适当的获取模型 -例如如果你有 ArrayList data 然后在 getItem 中使用 data.get(position % data.getItemCount()) (因为数组有固定的大小,但是你要通知适配器关于 veeery large/infinite 个项目的数量)

你现在的方法不好,因为你在操纵View的位置,这迟早会增加一些视觉故障,而且效率不高