Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 循环ViewPager实现_Android_Android Viewpager - Fatal编程技术网

Android 循环ViewPager实现

Android 循环ViewPager实现,android,android-viewpager,Android,Android Viewpager,解决方案-1:通过指定非常大的数字作为实际计数,但将它们映射到数据集/页面集的实际范围 问题:如果少于4项,则不起作用 解决方案-2添加两个额外项目,即第一个项目中的最后一个项目和最后一个项目中的第一个项目,并选择onPageSelected,根据位置值设置当前项目 问题:额外的寻呼机指示器和额外的片段实例 解决方案-3:使用ViewPager上的onTouchListener 问题:第一个MotionEvent始终为空。这是因为ViewPager自己的onTouchListener实

解决方案-1:通过指定非常大的数字作为实际计数,但将它们映射到数据集/页面集的实际范围

问题:如果少于4项,则不起作用


解决方案-2添加两个额外项目,即第一个项目中的最后一个项目和最后一个项目中的第一个项目,并选择onPageSelected,根据位置值设置当前项目

问题:额外的寻呼机指示器和额外的片段实例


解决方案-3:使用ViewPager上的onTouchListener

问题:第一个MotionEvent始终为空。这是因为ViewPager自己的onTouchListener实现吗

有没有合适的解决办法


或者,即使第三个解决方案运行良好,也很好。

我使用解决方案2和解决方案3的组合,我使用寻呼机的触控式监听器来观察滑动,并查看是否需要根据当前页面显示第一页或最后一页的副本

例如:

mPager.setOnTouchListener(new OnTouchListener(){

            @Override
            public boolean onTouch(View v, MotionEvent event) {


                if(event.getAction() == MotionEvent.ACTION_DOWN){
                    dxInitial=event.getX();
//                  
                }else if(event.getAction() == MotionEvent.ACTION_MOVE){
//                  
                    if(event.getX() - dxInitial > 50 && currentPage==1){

                    }else if(dxInitial - event.getX() > 50 && currentPage==5){
                        mPager.setCurrentItem(0,false);
                    }else if(dxInitial - event.getX() > 50 && currentPage==6){
                        mPager.setCurrentItem(1,false);
                    }else if(event.getX() - dxInitial > 50 && currentPage==0){
                        mPager.setCurrentItem(5,false);
                    }else if(event.getX() - dxInitial > 100 && currentPage==6){
//                      
                        mPager.setCurrentItem(1,false);
                    }
                }

                return false;
            }
        }); 

您有额外的寻呼机指示器,但用户永远不会看到或注意到它们,只要在更改页面时将smoothScroll设置为false即可

@tyczi如果您使用的是
touchListener
为什么您还需要两个额外的项目?请你检查一下我的电脑,看看是否有瑕疵。谢谢,因为您可以平滑地滚动到最后一页,然后在最后一页上切换到刷卡过程中的副本。这种方式使它看起来更像一个自然的浏览页面。如果您只是将最后一个索引上的页面更改为第一个索引,看起来就不那么平滑了。如何使用动态大小的ViewPager实现这一点?我也在尝试制作圆形ViewPager。我已经实施了它。使用2号溶液。现在的问题是,片段在第一轮滚动后无法工作。他们在第一轮中表现良好。但第一轮之后他们不工作了。按钮坏了。你能看看我的问题吗