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.
- Encuentra color dominante en un marco de cámara en OpenCV Android
- Cuadros de bits en escala de grises en android
- Fast Bitmap Blur para Android SDK
- Android: BitmapFactory.decodeByteArray ofrece bitmap pixelado
- Implementación de diferentes modos PorterDuff en android
¿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 devolver una imagen de opencv y mostrar en código androide java?
- ¿Cuál es la mejor manera de serializar una imagen (compatible con Swing) de Java a Android?
- Transmisión de matriz a rsForEach en Renderscript Compute
- ¿Podemos utilizar la clase EffectFactory para versiones inferiores
- Cómo encontrar las esquinas de un objeto Rect en openCV?
- Android - openCV, obtener parte de la imagen - comportamiento extraño
- Android jpeg pictureCallback en escala de grises Opencv Mat
- Detectar los límites de un documento en una imagen usando opencv java
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.