5

プログラムで作成した に問題があり、それをviaAnimationDrawableに割り当てるとすぐに開始されます (API 8 をサポートしています)。ImageViewimageView.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() を呼び出してアニメーションを実行します。

4

3 に答える 3