Italian Libreria B4AGifViewer di Moster67

LucaMs

Expert
Licensed User
Longtime User
Scrivo nel forum italiano, così non evidenzio problemi nel forum "internazionale" ;)

Ho provato la tua libreria ma pare non funzionare... pare.

Magari dipende dalla gif che ho usato?

Tutto ciò che ho fatto è stato inserirla da Designer in un layout, impostare il path e metterla in play (e in pause nella Activity_Pause).

Viene visualizzata ma non animata.

Pubblico la gif, se vuoi provare.

[Dato che è una view utilizzabile da Designer, non si potrebbe creare una proprietà personalizzata per inserire direttamente la gif?]

sad-animated-animation-boy-smiley-emoticon-000346-design.gif
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Altro problema (tosto da risolvere, penso) è che se creo una GifPlayer da Designer, con le esatte dimensioni della gif da caricare (in questo caso 118 x 105), malgrado l'autoscaleall perlomento sul mio tablet si vede bene. Se decido di crearne una più piccola, 1 / 4, dividendo per 2 ogni lato, l'aspetto finale è terrificante. Con la grafica su b4a è necessario usare l'antialiasing ma non so se puoi farlo con la tua libreria.
 

moster67

Expert
Licensed User
Longtime User
Grazie per il feedback

1) Posta qui il tuo progetto di test insieme con il gif e stasera controllo
2) Credo che era il mio primo wrapper con supporto Designer e forse non l'ho implementato a dovere. Normalmente non faccio wrappers dei Views.

Era stato richiesto da un cliente e mi diceva che faceva il suo dovere. Anche altri utenti che hanno scaricato il wrapper non hanno segnalato niente.
Potevi scrivere tranquillamente nel thread originale...
 

moster67

Expert
Licensed User
Longtime User
Stasera guardo..

In ogni caso: la libreria usa android.graphics.Movie
Se fai una ricerca su Internet scopri che tanti sviluppatori si lamentano del fatto che non c'è un gif-viewer/player (api) universale che è in grado di mostrare tutti gif animati correttamente per il mondo android.

Il mio cliente usa la libreria come segue:
1) fa partire il gif caricato dall'utente nel suo app
2) nella libreria che ho fatto per il mio cliente c'è un evento che dice se il gif può essere mostrato o no (forse non ho incluso questo evento nella libreria che ho pubblicato qui nel forum - non mi ricordo).
3) Se il gif è OK, il gif va mostrato nel player altrimenti il mio cliente usa la mia libreria ffmpegencoder che converte il gif originale (non compatibile) in un gif che è compatible e poi il player mostra il nuovo gif generato (ci vuole meno di un secondo).
 

moster67

Expert
Licensed User
Longtime User
Mai usato l'antialiasing
Non so...cosa fai normalmente per utilizzare l'antialiasing? Posta un po' di codice per capire meglio.
 

moster67

Expert
Licensed User
Longtime User
Non credo sia possibile. Un gif animato è composto da tanti frames(foto) messi insieme e devi riuscire in qualche maniera estrarre ogni singolo frame per applicare l'antialiasing e poi metterli insieme. Con la mia libreria ffmpegencoder lo puoi fare tranquillamente...mentre la mia libreria è solo un player....
 

LucaMs

Expert
Licensed User
Longtime User
Infatti lo sospettavo; non ho guardato android.graphics.Movie ma suppongo che faccia tutto da sé, senza poter intervenire su ogni "fotogramma".
Però dovrebbe essere proprio quello a farlo! Se provi a ridimensionare, nel progetto che ho allegato, la tua view, anche mantenendo le stesse proporzioni ma riducendola, l'immagine diventa inguardabile.
 

LucaMs

Expert
Licensed User
Longtime User
Temo che l'unica soluzione sia inglobare più di una versione della gif, da usare a seconda delle dimensioni dello schermo del dispositivo.
A meno che... a meno che usando direttamente Android Studio e android.graphics.Movie questo non sia necessario ed il ridimensionamento avvenga senza problemi.

Questo potresti dirmelo solo tu, @moster67, io, per ora, non uso Android Studio.
 

moster67

Expert
Licensed User
Longtime User
Credo che puoi estrarre i frames tramite la mia libreria se chiami i metodi necessari tramite JavaObject. Questo perché non sono esposti nella mia libreria.
Puoi in alternativa usare questa libreria:
https://www.b4x.com/android/forum/threads/animated-gif-decode-library.6879/#content
doc: https://www.b4x.com/android/help/gifdecoder.html

Il problema è che Android supporta solo il decoding di GIF ma non l'encoding
https://developer.android.com/guide/topics/media/media-formats.html

Per cui, per mettere insieme poi il frames non c'è nessun API che ti permette di farlo.
Questo è uno dei motivi perché ho sviluppato la mia libreria ffmpegencoder....
 

LucaMs

Expert
Licensed User
Longtime User
Credo che puoi estrarre i frames tramite la mia libreria se chiami i metodi necessari tramite JavaObject. Questo perché non sono esposti nella mia libreria.
Puoi in alternativa usare questa libreria:
https://www.b4x.com/android/forum/threads/animated-gif-decode-library.6879/#content
doc: https://www.b4x.com/android/help/gifdecoder.html

Il problema è che Android supporta solo il decoding di GIF ma non l'encoding
https://developer.android.com/guide/topics/media/media-formats.html

Per cui, per mettere insieme poi il frames non c'è nessun API che ti permette di farlo.
Questo è uno dei motivi perché ho sviluppato la mia libreria ffmpegencoder....
Conviene usare un tool per windows per estrarre i frame, ridimensionarli e rimontarli in una nuova gir più piccola, in modo da averne almeno due da usare su tablet e smartphone.
 

moster67

Expert
Licensed User
Longtime User
Conviene usare un tool per windows per estrarre i frame
Non ho mica capito?? L'idea non era di fare le cose con Android? Allora perché mi chiedi se si può fare con Android se poi al fine ti andava bene farlo su un PC?
:confused::confused::confused:
Poi come ti ho già detto; si fa tranquillamente anche con Android se si usa una libreria come la mia ffmpegencoder! Tanti app famosi che in qualche maniera genera grafica o ha bisogno di modificare la grafica, usa ffmpeg, tipo Instagram e tanti altri.
Ogni tanto non ti capisco - tiri fuori un discorso/idea per poi rassegnare. Dai, svegliati! :)
 

LucaMs

Expert
Licensed User
Longtime User
Non ho mica capito?? L'idea non era di fare le cose con Android? Allora perché mi chiedi se si può fare con Android se poi al fine ti andava bene farlo su un PC?
L'idea, solo vaga per adesso, è visualizzare una gif animata su Android. Se però, scalando l'immagine, si ottiene un brutto risultato conviene creare almeno una coppia di gif uguali da usare su screen di dimensioni diverse. Cmq, ho scritto una cosa non errata ma più complicata di quanto sia possibile, ovvero scomporre la gir, ridimensionare i frame e ricomporre la gif; non è necessario, ci sono siti online che lo fanno automaticamente (ovvero scalano una gif animata).

Ogni tanto non ti capisco - tiri fuori un discorso/idea per poi rassegnare. Dai, svegliati!
Per una volta che ero sveglio e non ho scritto min...ate... :p
 
Last edited:
Top