プログラムで作成した に問題があり、それをviaAnimationDrawable
に割り当てるとすぐに開始されます (API 8 をサポートしています)。ImageView
imageView.setBackgroundDrawable
これは私のコードの省略形です:
mSequence = new AnimationDrawable();
ImageView imageView = new ImageView(context);
ImageView.setAdjustViewBounds(false);
アセットはすべてローカルに保存されているので、AnimationDrawable
for(String assetId : mAssets) {
bitmap = loadBitmap(assetId); // returns a bitmap saved earlier
if (bitmap != null) {
mSequence.addFrame(new BitmapDrawable(res, bitmap), mFrameDuration);
}
}
そして最後に、AnimationDrawable
をビューに割り当てます
if (mSequence.getNumberOfFrames() > 0) {
imageView.setBackgroundDrawable(mSequence);
}
関数を呼び出す前に、が読み込まstart()
れるとすぐにアニメーションが開始されます。ImageView
独自のロジックに従って、アニメーションの開始時期を制御できるようにしたいと考えています。
これは誰かに起こりましたか?
**
編集:
**
Tom のおかげで、アニメーションがトリガーされる理由は、 をImageView
割り当てた後にアクティブに発生する に発生する可視性の変化であることがわかりましたAnimationDrawable
。私は複雑な状況にあるため、私の場合の解決策は簡単ではありませんが、他の人にとってはより簡単かもしれません。
編集2:
クラスの説明に従って、ドローアブルを背景として設定することに戻りました。引用します。
フレームごとのアニメーションを作成する最も簡単な方法は、res/drawable/ フォルダーに配置された XML ファイルでアニメーションを定義し、それをView オブジェクトの背景として設定することです。次に、start() を呼び出してアニメーションを実行します。