繁体   English   中英

如何制作圆形视图pager2?

[英]How to make a circular view pager2?

如何在 java 中制作圆形视图 pager2(无限滚动)? 例如,我想要 go 从第 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 页时,也会发生同样的情况。我只是想做一个无限滚动而不跳过任何页面。

您应该发布Adapter的代码,在那里您应该在getCount中返回Integer.MAX_VALUE并引入正确的 model 获取绘图列表项 - 例如,如果您有getItem ArrayList data ,则使用data.get(position % data.getItemCount())由于数组具有固定大小,但您正在通知适配器有关非常大/无限数量的项目)

您当前的方法不好,因为您正在操纵View的位置,这对于舒尔来说迟早会增加一些视觉故障,而且效率也不是很高

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM