Vista de desplazamiento horizontal: ¿Es realmente una solución?
Como miles de otros desarrolladores, en algún momento quería una galería horizontal de imágenes. (En mi caso lo quería en una página de PageViewer). Entonces escuché que había un widget llamado android.wiget.Gallery que fue diseñado sólo para esta situación.
Pronto, empecé a oír que Gallery estaba obsoleto, y comprobando StackOverflow, uno después de los otros posts sugirió que HorizontalScrollView es el camino a seguir.
- Añadir imagen de marca de agua en android
- cómo redimensionar automáticamente, compatible, ajustar el tamaño de pantalla para todos los dispositivos android
- Cómo hacer la cuadrícula horizontalmente desplazable en android
- cómo poner el botón al lado de actividad titile en android?
- Ajustar el margen, la altura y el ancho del botón de imagen mediante programación
Abandono Gallery y configuro todo en HorizontalScrollView. En primer lugar me di cuenta de que HorizontalScrollView no es realmente un widget en un sentido que sólo puede manejar un diseño de raíz. Ok, así que implementé el diseño de la raíz como LinearLayout. Agregue todos mis desplazamientos en LinearLayout y compruebe que HorizontalScrollView tampoco tiene un adaptador. No hay problema, voy a hacer un ciclo a través de las vistas, inflando uno por uno, y el lanzamiento de un AsyncTask para cargar la imagen. Funciona bien en 4.03. Luego lo corrí en 2.2 y adivina qué, había demasiadas tareas asíncronas en ejecución – por lo que se bloquea. Tal vez un único AsyncTask que se ejecuta a través de todos, pero hay más de 30 imágenes. Ahora estoy comenzando a considerar la galería otra vez.
Pero entonces oigo que hay un HorizontalListView. Lo implementé, además de un adaptador. Funciona perfectamente, pero ahora el desplazamiento no es tan suave (dentro de una página de ViewPager), y se queda atascado después de volver a cargar varias veces (dentro de una página de ViewPager). Me pregunto si debería pasar más tiempo modificando HorizontalListView o revisar mis otras tres implementaciones. Tal vez no debería haber tomado la deprecación tan en serio.
¿Alguna sugerencia?
Epílogo:
Al final, decidí quedarme con el HorizontalScrollView para dentro de ViewPager, y usar el HorizontalListView para otras situaciones. Esto se debió a las eficiencias de desplazamiento, a la velocidad del rayo, y pude finalmente elaborar un adaptador personalizado sustituyendo onScroll en el HorizontalScrollView, y en combinación con CountDownTimer actualizar las imágenes dentro de un rango periódicamente independientemente de la velocidad. Otra solución sugerida fue usar la velocidad para iniciar la descarga, cuando lo suficientemente lento. Sería genial si los advoates de HorizontalListView comprobaran su comportamiento dentro de un ViewPager, ya que estoy seguro de que podría ser optimizado y mejorado. Esto habría sido mi solución preferida si tuviera más tiempo. Pero el tiempo es fugaz ..
- Vista personalizada de múltiples vistas
- Detectar si TextView en ListView está ellipsizado
- Cómo cambiar android: layout_alignParentRight runtime by java code
- Cómo limitar el campo de edición de Android sólo para algunos caracteres seleccionados
- Cambiar el color de fondo del popupmenu al usar la biblioteca de soporte
- Android - Compuesto personalizado generado dinámicamente Ver recreado en RecyclerView, causando un rendimiento bajo
- La adición de Scrollview empuja el diseño completo al tamaño de la mitad de la vista?
- El botón aparece en la API de Android 19, pero no en la API 17
Si todavía estás decidido a trabajar con un HorizontalScrollView
, sugiero buscar aquí el diseño y aquí para manejar el oyente de selección de elementos. No me gusta esta ruta sin embargo, como usted es esencialmente sólo hacer un LinearLayout
gigante dentro de la HorizontalScrollView
que puede causar problemas de memoria como todas las imágenes persisten incluso cuando fuera de la pantalla.
Personalmente, yo sugeriría el uso de la HorizontalListView
encontrado aquí .