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.
- Android ImageView Vecino más cercano
- Incluir OpenCV en el paquete de aplicaciones de Android
- Cambiar el color de un objeto en una aplicación de Android
- Cómo cambiar el tamaño de una imagen a la imagen de alta resolución sin perder píxeles?
- Cómo configurar la imagen de salida use com.android.camera.action.CROP
¿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.
- Cómo hacer un fadein de una imagen en una pantalla de Android Activity?
- Android - Cómo aplicar diffenernt Efectos de imagen en mapa de bits como sepia, blanco y negro, desenfoque, etc
- Ajuste de saturación y ColorFilter a la imagen simultáneamente
- ¿Cómo detectar la intensidad promedio de píxeles de la vista previa de cámara en vivo?
- Uso de ImageMagick en mi aplicación Android
- ¿Cuál es la mejor manera de enviar una imagen desde un dispositivo Android a un servidor para su procesamiento y enviar los resultados?
- ¿Cuál es la mejor manera de serializar una imagen (compatible con Swing) de Java a Android?
- Ajuste automático de brillo, contraste y nitidez de una imagen de mapa de bits
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.