ViewPager循环,少于4个视图

时间:2012-12-05 14:55:47

标签: android android-viewpager carousel

我正在尝试使用ViewPager组件实现无限轮播。我基于Antonyt创建的那个,但使用少于4个视图时出现问题。由于观点已经到位。必须是欺骗Viewpager在不同位置绘制相同视图/页面的方法。

4 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,自己也找不到解决方法。但我想通过仅使用1-4次视图是不可能的。问题在于所有视图(重复1-4个图像)将一次实例化(或至少在非常短的时间间隔内),这会干扰图像加载过程,因为前一个负载尚未完成,所以prev一个人返回损坏的视图。你可以处理这样的事情。

1)在实例化之后,使用延迟为100-200ms的处理程序在任一方向上反复翻转视图setCurrentItem()(大约10次),这样原来的4将是超出范围(如果您有屏幕外页面限制,我希望您的代码属于infinte性质),并将在以后逐个创建。

2)使用多个缓冲区对象

1个图像-8缓冲区

2张图片 - 每张4张缓冲区

3张图片 - 每张2张缓冲......就像这样。

既不是理想的解决方案,但两者都适用于我。我想知道你也尝试了什么。

答案 1 :(得分:0)

解决方案是在ViewPager中使用相同的子视图。如果没有将相同的子节点分配给父节点,那么使用具有真实视图的ProxyView就可以了。从ViewGroup扩展Fake View并覆盖Draw方法就可以了!

答案 2 :(得分:0)

您可能需要在OnDestoryItem方法中执行一些工作以重新附加已分离的项目。
我已经在这里发布了我的解决方案,https://github.com/antonyt/InfiniteViewPager/issues/2

答案 3 :(得分:-1)

尝试以下技巧,我已成功使用它来制作(虚假)无限ListView

在适配器的getCount()方法中,返回Integer.MAX_VALUE。

然后在适配器的instantiateItem()destroyItem()中,使用position % datasource.size()

这个技巧取自HERE