Maison >Java >javaDidacticiel >Comment afficher des GIF animés dans Android à l'aide d'AnimationDrawable ou d'un objet Movie ?

Comment afficher des GIF animés dans Android à l'aide d'AnimationDrawable ou d'un objet Movie ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 12:51:18144parcourir

How to Display Animated GIFs in Android Using AnimationDrawable or Movie Object?

Extraction d'images à partir d'un GIF animé et affichage avec AnimationDrawable

Sous Android, l'affichage d'images GIF animées était auparavant difficile en raison du manque de support natif . Cependant, une solution alternative existe : les convertir en AnimationDrawable.

Extraire des images d'un GIF animé

Malheureusement, Android ne fournit pas de mécanisme simple pour extraire des images d'un GIF animé. . Néanmoins, vous pouvez mettre en œuvre votre propre logique pour y parvenir. Une approche consiste à utiliser des bibliothèques tierces telles que Android-Gif-Decoder ou Animated GIF pour diviser le GIF en images individuelles.

Conversion des images to Drawable

Une fois que vous avez extrait les images, vous devez convertir chaque image en Drawable pour l'incorporer dans AnimationDrawable. Cela implique de créer un objet Bitmap pour chaque image et de le définir comme source du Drawable. Par exemple :

Bitmap frameBitmap = BitmapFactory.decodeByteArray(frameData, 0, frameData.length);
Drawable frameDrawable = new BitmapDrawable(getResources(), frameBitmap);

Création d'un AnimationDrawable

Avec les Drawables individuels préparés, vous pouvez créer un AnimationDrawable :

AnimationDrawable animationDrawable = new AnimationDrawable();
for (Drawable frameDrawable : frameDrawables) {
    animationDrawable.addFrame(frameDrawable, 100); // Duration in milliseconds
}

Affichage de l'image animée

Enfin, attribuez le AnimationDrawable vers un ImageView pour afficher le GIF animé :

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/animation_drawable" />

Solution alternative : utilisation d'un objet Movie

Fait intéressant, Android propose la classe android.graphics.Movie, qui peut décoder et afficher des GIF animés. Bien qu'elle ne soit pas bien documentée, cette approche est utilisée dans l'exemple BitmapDecode d'Android.

Pour utiliser Movie, vous pouvez récupérer le contenu du GIF via AssetManager et créer un objet Movie :

AssetManager assetManager = getAssets();
InputStream gifInputStream = assetManager.open("my_gif.gif");
Movie movie = Movie.decodeStream(gifInputStream);

Enfin, associez l'objet Movie à un ImageView pour afficher le GIF animé :

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/my_gif.gif" />

En suivant ces approches, vous pouvez réussir à afficher un GIF animé. GIF dans votre application Android.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn