Inicie una presentación de diapositivas de imágenes con solo hacer clic en un botón

Escribí el código para seleccionar una carpeta de la SDCard y su ruta se devuelve como un Uri / string. También verifico si la carpeta devuelta contiene imágenes (terminando en .jpg). Ahora que tengo la ruta, quiero comenzar una nueva actividad (usando intenciones y pasando el valor de uri en intent.putextras) en el clic de un botón para que la siguiente actividad muestre imágenes una tras otra como una presentación de diapositivas (usando temporizadores). Solo dame un esquema básico de cómo voy a hacer esto. ¿Qué pasos debo seguir?

Aquí está mi error de Logcat:

11-10 17:23:30.500: DEBUG/dalvikvm(15114): GC_EXTERNAL_ALLOC freed 2K, 49% free 2773K/5379K, external 11850K/13302K, paused 55ms  
11-10 17:23:30.510: ERROR/dalvikvm-heap(15114): 3840000-byte external allocation too large for this process.  
11-10 17:23:30.510: ERROR/dalvikvm(15114): Out of memory: Heap Size=5379KB, Allocated=2774KB, Bitmap Size=11850KB, Limit=20480KB  
11-10 17:23:30.510: ERROR/dalvikvm(15114): Trim info: Footprint=5379KB, Allowed Footprint=5379KB, Trimmed=908KB  
11-10 17:23:30.510: ERROR/GraphicsJNI(15114): VM won't let us allocate 3840000 bytes  
11-10 17:23:30.550: DEBUG/dalvikvm(15114): GC_FOR_MALLOC freed <1K, 49% free 2773K/5379K, external 11850K/13302K, paused 34ms  
11-10 17:23:30.550: DEBUG/skia(15114): --- decoder->decode returned false  
11-10 17:23:30.550: DEBUG/AndroidRuntime(15114): Shutting down VM  
11-10 17:23:30.550: WARN/dalvikvm(15114): threadid=1: thread exiting with uncaught exception (group=0x400205a0)    
11-10 17:23:30.550: ERROR/AndroidRuntime(15114): FATAL EXCEPTION: main  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114): java.lang.OutOfMemoryError: bitmap size exceeds VM budget(Heap Size=7299KB, Allocated=2773KB, Bitmap Size=11850KB)
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.graphics.BitmapFactory.nativeDecodeFile(Native Method)
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:355)
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:433)
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at com.androidworkz.imageviewflipper.ImageViewFlipper$MyGestureDetector.onFling(ImageViewFlipper.java:357)
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.view.GestureDetector.onTouchEvent(GestureDetector.java:568)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at com.androidworkz.imageviewflipper.ImageViewFlipper.onTouchEvent(ImageViewFlipper.java:428)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.app.Activity.dispatchTouchEvent(Activity.java:2217)    
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1747)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2336)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1976)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.os.Handler.dispatchMessage(Handler.java:99)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.os.Looper.loop(Looper.java:143)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at android.app.ActivityThread.main(ActivityThread.java:4277)   
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at java.lang.reflect.Method.invokeNative(Native Method)   
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at java.lang.reflect.Method.invoke(Method.java:507)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)  
11-10 17:23:30.550: ERROR/AndroidRuntime(15114):     at dalvik.system.NativeStart.main(Native Method)  
11-10 17:23:30.570: WARN/ActivityManager(123):    

Forzar la actividad de finalización com.androidworkz.imageviewflipper / .ImageViewFlipper

preguntado el 08 de noviembre de 11 a las 10:11

1 Respuestas

Hola Como ha descrito que desea hacer una presentación de diapositivas, entonces debería tener que usar Android ViewFlipper para hacer una presentación de diapositivas como lo requiera. Por favor, consulte este enlace de referencia antes de hacer algo como una presentación de diapositivas de imágenes en Android.

El enlace uno se usa mejor para buscar casi todos los tipos de ruta de imágenes desde la tarjeta SD, pero al usar este ejemplo, tendrá que lidiar con la falta de memoria en Android, así que tenga cuidado de usarlo. Desliza y después de deslizar mucho más tiempo forzará el cierre debido a un problema de memoria.

1.Enlace uno

en el ejemplo anterior Están usando

 viewFlipper.showNext();
 viewFlipper.showPrevious();

Por lo tanto, debe usar su propia lógica para hacer que ViewFlipper se voltee como un intervalo regular para hacer ahora una presentación de diapositivas. Use el temporizador para hacer que ViewFlipper sea el siguiente después de un tiempo, como desee o puede usar, puede usar Thread para hacer que ViewFlipper sea el siguiente.

y también puede aplicar animación en el momento entre cambios de una imagen a otra. Aquí está el enlace para el uso de animación en Android:Haga clic aquí Enlace dos

También puede enfrentar un problema de memoria, así que lea esto también:Enlace Tres

respondido 09 nov., 11:09

Edité el código para cumplir con mis requisitos ... ahora, como dijiste, me quedé con el problema de cierre forzado aquí después de mostrar algunas imágenes continuamente en una fila ... trabajando en ello ... - user838522

@Hola, ¿estás probando tu aplicación en dispositivos móviles y cuál es tu RAM móvil Android? - Herry

Sí, probé la aplicación en mi móvil. Tiene 512 MB de RAM. - user838522

Entonces debería funcionar bien, use esto para obtener la imagen de Path mBitmap = BitmapFactory.decodeFile (ImageList .get (currentIndex)); y configure BitMap To Imageview iv.setImageBitmap (mBitmap); si aún no funciona y tenemos que comprobar qué aparece Error - Herry

Gracias, creo que el problema se ha resuelto parcialmente. Pero si tengo imágenes con mayor resolución, el mismo problema persiste. ¡He pegado el logcat y dice OutOfMemoryError! Qué más se puede hacer? - user838522

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.