Problemas de rendimiento de Android ViewPager al utilizar el fondo

Tengo una Activity hecha por XML, he fijado su fondo a una imagen de fondo que tengo en mi carpeta drawable.

En la misma actividad he creado un ViewPager para permitir pasar y retroceder entre las vistas. Todas las vistas dentro de ViewPager contienen una imagen.

Siempre que deslizo hacia la izquierda o hacia la derecha, la transición es muy lenta.

Traté de quitar la imagen de fondo estableciéndola en blanco (#fff) y todo el retraso había desaparecido. Funcionó perfecto! El problema es que necesito ese fondo para la aplicación.

¿Hay alguna forma de optimizar una imagen de fondo o algo así swiping va a ir sin problemas otra vez? Actualmente es demasiado frustrante usar debido al retraso.

También traté de recortar la imagen a un tamaño pequeño y luego sólo lo estiró sobre la pantalla, pero no vi ninguna mejora en el rendimiento. También no es la falta de imágenes que se encuentran en el ViewPager , cuando lo probé con TextViews en su lugar había el mismo retraso.

Lo averigué yo mismo después de algunas búsquedas, voy a dejar la respuesta aquí para cualquier otra persona que se encuentra con este problema.

Al parecer, android tiene un montón de problemas para representar un fondo cuando la imagen se estira. Al menos en la Galaxy Tab 10.1 con Android 3.2 lo hace.

La imagen de fondo que estaba usando era una imagen de un piso de madera, porque es un patrón de los mismos tablones que se repite que yo maneje cortar la imagen abajo de 1440 x 1050 a cerca de 350×500. Al utilizar esta imagen como fondo mientras se extendía por toda la pantalla había una gran caída de rendimiento. Sin embargo, al mostrar como una sola imagen en la esquina superior izquierda, funcionó bien.

Utilizando el método descrito aquí logré repetir la imagen en toda la pantalla en lugar de estirarla. Sorprendentemente, no noté absolutamente ningún estrés adicional y las transiciones fueron muy suaves.

Así que aquí está, espero que esto ayude a otros con los mismos problemas de rendimiento!

Otra solución en los últimos años: Tienes que poner tu drawables en las carpetas apropiadas. Tuve mi background.png en la carpeta de dibujo y se quedó rezagado porque lucha con el streching. No podría utilizar repetible porque no tengo ese patrón en mi teléfono.

Pero cuando puse mi fondo dibujable en drawable-xhdpi, trabajé sin ningún retraso en absoluto. Así que para futuras referencias también es posible que esto podría resolver su problema. Ref esta pregunta que se resuelve: ViewPager muy lento en Samsung S4

Este truco me ayuda mucho al pasar con pager. Se basa en la aceleración de hardware.

  viewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageScrollStateChanged(int scrollState) { if (scrollState != ViewPager.SCROLL_STATE_IDLE) { final int childCount = viewPager.getChildCount(); for (int i = 0; i < childCount; i++) viewPager.getChildAt(i).setLayerType(View.LAYER_TYPE_NONE, null); } } .... }); 

Espero que ayude.

  • Cómo reiniciar la imagen ampliada en la imagen original
  • Llamar aStart () de Fragmento antes para mostrar Viewpager, navigation_mode_tabs
  • ViewPager con múltiples instancias de fragmentos de la misma clase
  • Obtención de la instancia Fragment actual en el viewpager
  • Es posible hacer la transición de elementos compartidos de fragmento a ViewPager dentro de viewpager
  • Cómo crear un Recycler Grid View con desplazamiento horizontal
  • Vista personalizada que divide el diseño en diagonal con diferentes vistas secundarias
  • ViewPager en un ListView - cómo bloquear el eje de desplazamiento?
  • La imagen de fondo de Android ralentiza la aplicación
  • Pestañas de la barra de acciones anidadas (con ViewPager)
  • Flip imágenes en un viewpager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.