ホームページ >Java >&#&チュートリアル >Android でアニメーション GIF を表示するには、AnimationDrawable または Movie オブジェクトを使用しますか?
アニメーション GIF からフレームを抽出し、AnimationDrawable で表示する
Android では、ネイティブ サポートがないため、以前はアニメーション GIF 画像の表示が困難でした。 。ただし、別の解決策として、AnimationDrawable に変換するという方法があります。
アニメーション GIF からのフレームの抽出
残念ながら、Android にはアニメーション GIF からフレームを抽出するための簡単なメカニズムが提供されていません。 。ただし、これを実現するために独自のロジックを実装することもできます。 1 つのアプローチは、Android-Gif-Decoder や Animated GIF などのサードパーティ ライブラリを使用して、GIF を個々のフレームに分割することです。
フレームの変換to Drawable
フレームを抽出したら、各フレームを変換する必要がありますDrawable に変換して、AnimationDrawable に組み込みます。これには、フレームごとに Bitmap オブジェクトを作成し、それを Drawable のソースとして設定することが含まれます。例:
Bitmap frameBitmap = BitmapFactory.decodeByteArray(frameData, 0, frameData.length); Drawable frameDrawable = new BitmapDrawable(getResources(), frameBitmap);
AnimationDrawable の作成
個々の Drawable を準備したら、AnimationDrawable を作成できます:
AnimationDrawable animationDrawable = new AnimationDrawable(); for (Drawable frameDrawable : frameDrawables) { animationDrawable.addFrame(frameDrawable, 100); // Duration in milliseconds }
アニメーションを表示するImage
最後に、AnimationDrawable を ImageView に割り当ててアニメーション GIF を表示します。
<ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/animation_drawable" />
代替解決策: Movie オブジェクトを使用する
興味深いことに、Android はアニメーション GIF をデコードして表示できる android.graphics.Movie クラスを提供しています。十分に文書化されていませんが、このアプローチは Android 独自の BitmapDecode サンプルで使用されています。
Movie を利用するには、AssetManager 経由で GIF のコンテンツを取得し、Movie オブジェクトを作成できます:
AssetManager assetManager = getAssets(); InputStream gifInputStream = assetManager.open("my_gif.gif"); Movie movie = Movie.decodeStream(gifInputStream);
最後に、Movie オブジェクトを ImageView に関連付けて、アニメーションを表示します。 GIF:
<ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/my_gif.gif" />
これらのアプローチに従うことで、Android アプリケーションでアニメーション GIF を正常に表示できます。
以上がAndroid でアニメーション GIF を表示するには、AnimationDrawable または Movie オブジェクトを使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。