Android cómo hacer la diapositiva de pantalla de imagen?

Estoy construyendo una galería muy básica en android, muestra la última imagen en la carpeta de la cámara y el usuario puede deslizar hacia la izquierda para ver la anterior.

Terminé una implementación usando un viewpager y un pagerAdapter usando sampleSize para escalar imágenes. Mi problema es que la implementación no es tan eficiente como la aplicación de galería por defecto, cada vez que se desliza una imagen hay que esperar unos 200 ms para la siguiente carga. Así que básicamente mi idea de cómo implementarla no está funcionando.

¿Cómo puedo hacerlo eficientemente, y si es posible con una implementación que permite acercar y alejar más adelante?


Esto parece prometedor, pero no sé cómo implementarlo con los archivos en lugar de drawables http://www.androidviews.net/2012/11/photoview/


EDITAR:

He logrado mejorar la velocidad un poco con photoview (un buscador hackeado), sin embargo, se necesita demasiado para convertir los paths de archivos a bitmaps o drawables.

He intentado estos dos métodos sugeridos por dilix y iDroid Explorer:

// Method A Drawable d = Drawable.createFromPath(imagePath); imageView.setImageDrawable(d); // Method B Bitmap myBitmap = BitmapFactory.decodeFile(imagePath); imageView.setImageBitmap(myBitmap); 

Pero ambos producen error Bitmap too large to be uploaded into a texture . Necesito conseguir la imagen a la imageView lo más rápidamente posible y de alguna manera eludir este error y quizá conseguiré una velocidad decente. Ahora mismo estoy escalando las imágenes y convirtiéndolas en un dibujable, pero no es muy eficiente.

Compruebe este sitio web impresionante: http://www.androidviews.net/ y tal vez esto es lo que quiere: http://www.androidviews.net/2012/11/photoview/

Tiene desplazamiento de página, zoom y panorámica como necesitas Lo he utilizado en mi proyecto con algunas modificaciones y carga de imágenes perezosas. Está funcionando exactamente como usted necesita.

Consulte la documentación oficial para ver un gran ejemplo que le guiará a través del uso de mapas de bits con un viewpager de manera eficiente. Debe utilizar una caché de las imágenes que ya se han cargado y las imágenes deben cargarse fuera del subproceso de interfaz de usuario. También desea escalar la imagen al tamaño mínimo necesario para su visualización (usualmente poderes de dos – tenga en cuenta que la imagen no siempre se escalará a lo que se le pide!) ViewPager también carga imágenes en el fondo para prepararse para el próximo diapositiva, que se establece con el método setOffScreenPageLimit (el valor predeterminado suele ser bueno, creo que es 2.)

https://developer.android.com/training/displaying-bitmaps/index.html

No estoy seguro si tienes la solución correcta o no. Pero si quieres continuar con tu propia implementación con tu enlace dado entonces:

 http://www.androidviews.net/2012/11/photoview/ //this link is given in your question 

Y usted puede ver esto SO para cómo convertir la trayectoria del archivo adentro al drawable. Ahora, obtiene dibujable de su archivo especificado e implementar en el enlace que ha dado.

Creo que el enlace funcionará bien.

No dude en hacer comentarios.

1}

Esto parece prometedor, pero no sé cómo implementarlo con los archivos en lugar de drawables http://www.androidviews.net/2012/11/photoview/

Usted tiene que almacenar no lista de drawables en su adaptador, pero los enlaces a los archivos en su tarjeta SD y luego cargarlo.

2) Pero puedo imaginar que el archivo en vez de drawables no será tan eficiente porque cargar de archivos que usted tiene que analizarlo de la tarjeta del sd.

Creo que puedes ahorrar tiempo al cargar varias imágenes en tu memoria simultáneamente (comprimida) y cuando vas a tu othe imagen ya tendrás la imagen y la memoria y mientras swyping puedes empezar a cargar otra imagen en la memoria.

Al voltear sobre la galería no puede cargar imágenes y cargarlo después de casi detenerse.

Es el principal problema: consumo de memoria vs rendimiento.

ACTUALIZAR

Creo que mejor que explorar esto por sí mismo será explorar el código existente de la galería de google: https://github.com/CyanogenMod/android_packages_apps_Gallery

Como he comprobado – almacenar caché (casi como he dicho sobre la carga de múltiples mapas de bits) y almacenar sólo imágenes redimensionadas – parece ser eficiente.

  • Cómo convertir MatOfPoint a MatOfPoint2f en opencv java api
  • Optimización de la mezcla por pixel en mapas de bits de Android
  • Cómo desenfocar una parte de la imagen en Android?
  • Programación de GPU en dispositivos Android
  • Uso de ImageMagick en mi aplicación Android
  • No se puede importar javax.imageio.ImageIO en la aplicación de Android
  • Imagen umbral con opencv (Java)
  • Incluir OpenCV en el paquete de aplicaciones de Android
  • Recortar imagen por área de polígono
  • Biblioteca de procesamiento de imágenes para Android?
  • ¿Hay alguna biblioteca java para leer los códigos de barras del número vin de la imagen?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.