|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

61.- Gif animado en pantalla. Librería GifDecoder.

- Presentación.

 

- Android no puede presentar gif animados directamente, así que debemos realizar algún algoritmo para poderlos visualizar.

- El truco consiste en obtener los fotogramas (frames) del gif animado y luego ir presentándolos secuencialmente mediante un Timer.

- Para obtener los frames de un gif animado podemos recurrir a alguno de los muchos programas que hay en internet.

- En mi caso he obtenido los frames mediante una web online, es decir, le envío mi archivo samurai.gif y me devuelve una carpeta comprimida con cada uno de los frame, la web en cuestión es:

 

http://uk.bloggif.com/gif-extract

 

____________________________
- Código.

- Una vez obtenidos los frames, los subimos a la carpeta Files del proyecto.

- Bajar programa gif_animado.zip

Copia y pega este código en un nuevo proyecto
Sub Process_Globals
' Juan Antonio Villalpando
' juana1991@yahoo.com

' Web para obtener online  los frames de los gif animados
' http://uk.bloggif.com/gif-extract?id=fe9bddf8ff40ac05cfb0b6c78ad69a5a

End Sub

Sub Globals
 Dim imagen As ImageView
End Sub

Sub Activity_Create(FirstTime As Boolean)

    Activity.Color = Colors.White
    imagen.Initialize("imagen")
    Activity.AddView(imagen, 40dip, 20dip, 260dip, 400dip)
    ' imagen.Bitmap = LoadBitmap(File.DirAssets, "samurai.gif")
    
    For n = 1 To 18
    Pausa(200)
    imagen.Bitmap = LoadBitmap(File.DirAssets, "frame-" & n & ".gif")
    If n =18 Then n = 1
    Next
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Pausa(milisegundos As Long)
   Dim now As Long
   now = DateTime.now
   Do Until (DateTime.now > now + (milisegundos))
      DoEvents
   Loop
End Sub

______________________________

- ¿Qué significa DoEvents?

- Es una orden que permite que se realicen Eventos, un evento es pulsar un botón (Click), cambiar el valor de un EditText (Change), en general, realizar alguna acción por parte del usuario o la aplicación.

Si utilizamos un bucle que conlleva mucho tiempo su realización.

For n = 1 To 18 Pausa(200)
imagen.Bitmap = LoadBitmap(File.DirAssets, "frame-" & n & ".gif")
If n =18 Then n = 1

DoEvents

Next

- No podremos realizar ningún evento, ya que está en un lazo contínuo, y nunca saldrá del bucle. Para permitir que se puedan realizar Eventos mientras está dentro de un bucle infinito, se utiliza la orden DoEvents.

- El DoEvents es conveniente evitarlos en lazos infinitos, como indica este tutorial.

- A muchos programadores no les gusta utilizar el DoEvents.

_______________________________________
- Librerías para trabajar con GIF animados.

- B4A dispone de librerías para trabajar con GIF animados.

1.- Puedes utilizar la librería GifDecoder. A esta librería le cargamos directamente un archivo de gif animado...

gif.Load(File.DirAssets, "clonesheep.gif")

y ella se encarga de decodificar las imágenes que contiene el archivo y presentarlas mediante un Timer que pondremos en nuestro código.

Documentación de GifDecoder.

 

2.- Librería de GIF animados. (GifEncoder). Con esta librería podemos crear gif animados, es decir, sumar distintas imágenes como si fuesen fotogramas para realizar un gif animado.

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información