Tengo un proyecto en el GitHub con algunos widgets que he creado. Aquí su:
https://github.com/CyberEagle/AndroidWidgets
En el siguiente paquete, están los adaptadores para ser utilizados con el CircularViewPager: https://github.com/CyberEagle/AndroidWidgets/tree/master/src/main/java/br/com/cybereagle/androidwidgets/adapter
En primer lugar, que va a utilizar en lugar de CircularViewPager ViewPager en su diseño. El CircularViewPager está aquí: https://github.com/CyberEagle/AndroidWidgets/blob/master/src/main/java/br/com/cybereagle/androidwidgets/view/CircularViewPager.java
Este ViewPager espera un WrapperCircularPagerAdapter, en lugar de un PagerAdapter. Este contenedor se utiliza para engañar a ViewPager, lo que hace pensar que hay muchos elementos en ViewPager, pero en realidad repite tus elementos para hacer el efecto circular. Así, en lugar de implementar ya sea PagerAdapter, FragmentPagerAdapter o FragmentStatePagerAdapter, llevarlo a la práctica ya sea CircularFragmentPagerAdapter, CircularFragmentStatePagerAdapter o CircularPagerAdapter. Luego, ajustará su adaptador con WrapperCircularPagerAdapter y configurará el contenedor en CircularViewPager, en lugar de su adaptador. Además, cuando sea el momento de notificar el cambio en el conjunto de datos, llamará a notifyDatasetChanged() en el contenedor.
Al implementar uno de los adaptadores circulares, se dará cuenta de que en lugar de implementar instaseaElement, tendrá que implementar instantiateVirtualItem. Para el adaptador de buscapersonas del fragmento, implementará getVirtualItem en lugar de getItem. Eso es porque he creado el concepto de elementos virtuales.
Para que quede claro, imagínese una vista localizador con 4 elementos, dando que cada elemento representa un musical. Cuando vaya todo el camino hacia la izquierda, verá el cuarto elemento a la izquierda del primero. En realidad, es un elemento completamente nuevo, pero está vinculado al elemento virtual que representa la cuarta música.
Otro ejemplo: imagine que ahora solo hay una música. Verá la misma música a la izquierda y a la derecha. Hay 3 elementos a la vez, pero solo un elemento virtual.
Por lo tanto, como se explicó, el Contenedor está engañando al ViewPager, lo que hace pensar que hay muchos elementos. Para que sea más difícil para el usuario llegar a uno de los extremos de ViewPager (de todos modos, llevaría mucho tiempo), cada vez que ocurre un cambio en el conjunto de datos, ViewPager va al mismo elemento virtual, pero a uno de los artículos reales cerca del medio.
Una cosa más importante es que el CircularViewPager tiene el método setCurrentVirtualItem.Este método calcula qué elemento real es el artículo virtual deseado más cercano y luego usa setCurrentItem para establecerlo. También tiene la opción de usar getCurrentVirtualItem, que devolverá el índice del elemento virtual actual. Tenga en cuenta que si usa getCurrentItem, obtendrá un índice grande.
Bueno, esto es todo. Lo siento por la falta de documentación del proyecto. Estoy planeando documentarlo pronto. También estoy planeando eliminar la necesidad del envoltorio. Siéntase libre de copiar el código (respetando la licencia de Apache 2.0), para tenedor o incluso contribuir a ello.
he implementado una solución para esto. Casi estoy terminando las pruebas y responderé aquí cuando termine. –
@FernandoCamargo has solucionado esto ?? –
Sí. Lo siento, olvidé responderlo aquí. Voy a publicar la respuesta ahora. –