Android 循环ViewPager实现
解决方案-1:通过指定非常大的数字作为实际计数,但将它们映射到数据集/页面集的实际范围 问题:如果少于4项,则不起作用Android 循环ViewPager实现,android,android-viewpager,Android,Android Viewpager,解决方案-1:通过指定非常大的数字作为实际计数,但将它们映射到数据集/页面集的实际范围 问题:如果少于4项,则不起作用 解决方案-2添加两个额外项目,即第一个项目中的最后一个项目和最后一个项目中的第一个项目,并选择onPageSelected,根据位置值设置当前项目 问题:额外的寻呼机指示器和额外的片段实例 解决方案-3:使用ViewPager上的onTouchListener 问题:第一个MotionEvent始终为空。这是因为ViewPager自己的onTouchListener实
解决方案-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号溶液。现在的问题是,片段在第一轮滚动后无法工作。他们在第一轮中表现良好。但第一轮之后他们不工作了。按钮坏了。你能看看我的问题吗