Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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 具有少于4个视图的ViewPager循环_Android_Android Viewpager_Carousel - Fatal编程技术网

Android 具有少于4个视图的ViewPager循环

Android 具有少于4个视图的ViewPager循环,android,android-viewpager,carousel,Android,Android Viewpager,Carousel,我正在尝试使用ViewPager组件实现一个无限旋转木马。我以创建的视图为基础,但使用少于4个视图存在问题。因为视图已经就位。这一定是一种欺骗Viewpager在不同位置绘制相同视图/页面的方法。我遇到了相同的问题,自己找不到解决方案。但是我想仅仅使用1-4个视图是不可能的。问题是,所有视图(1-4个重复图像)将一次实例化(或至少在很短的时间间隔内实例化),这会干扰图像加载过程,因为上一次加载尚未完成,因此上一次加载返回损坏的视图。不过你可以这样处理 1)实例化后,立即使用延迟为100-200m

我正在尝试使用ViewPager组件实现一个无限旋转木马。我以创建的视图为基础,但使用少于4个视图存在问题。因为视图已经就位。这一定是一种欺骗Viewpager在不同位置绘制相同视图/页面的方法。

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

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

2)使用多个缓冲区对象

1个映像-8缓冲区

2个图像-每个图像有4个缓冲区

3个图像-每个图像有2个缓冲区。。。像这样的


两者都不是理想的解决方案,但都对我有效。我也想知道你也尝试了什么

试试下面的技巧,我已经成功地用它制作了一个(人造的)无限
ListView

在适配器的
getCount()
方法中,返回Integer.MAX\u值

然后在适配器的
实例化项()
销毁项()
中,使用
位置%datasource.size()


此技巧源自。

解决方案是在ViewPager中使用相同的子视图。要做到这一点,而不必将同一个子对象分配给父对象,就需要使用包含真实视图的ProxyView。从ViewGroup中扩展该假视图并覆盖Draw方法将实现此目的

您可能需要在OnDestoryItem方法中执行一些操作,以重新附加已分离的项。

我已经在这里发布了我的解决方案,

嗨,沙克蒂,我不太明白你的解决方案。你能分享你的代码吗?对我来说,实现起来很复杂,代码分散。基本思想是让它们一个接一个地实例化,而不是一次全部实例化。试着做点什么让它发生。在缓冲区的情况下,您必须创建具有相同内容的多个ImageView。问题是,我需要在不同的位置使用相同的视图,因此我不能像其他实例那样多次实例化。一个已经依附于父母的孩子的问题也是如此。解决方案可以是在两个位置绘制视图。这在ViewPager的结构中更深入。嗨,Vinay,我已经使用了这个解决方案。问题是要使它在少于4个视图的情况下工作。