AnimationDrawableを使用して一連の画像をアニメーション化しようとしています。ユーザーはボタンをクリックするだけでアニメーションを一時停止/再開することができます。私はsetVisible(boolean visible, boolean restart)
を使ってそうしています。ドキュメントを正しく理解しているかどうかは完全にはわかりませんが、一時停止を押すたびにアニメーションが最初から開始されます。AnimationDrawableを一時停止して同じフレームから再開
同じフレームからアニメーションを再開する方法はありますか? AnimationDrawable APIから
:再起動がfalseの場合
...、描画可能ただ明確にすることが最も最近のフレームから
を再開します。
activityAnimation.setVisible(false, false);
は、アニメーションを停止する必要があります。
activityAnimation.setVisible(true, false);
同じフレームからアニメーションを再開する必要があります(そうではありません)。ここで
私のコードは次のとおりです。
アニメーションstart()
はonWindowFocusChanged
に呼ばれています。
アニメーションやボタンがonCreate
で作成されているが:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content);
ImageView activityImage = (ImageView) findViewById(R.id.activity_image);
activityImage.setBackgroundResource(R.drawable.anim);
activityAnimation = (AnimationDrawable) activityImage.getBackground();
....
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageButton b = (ImageButton) v;
if ((Integer)b.getTag() == R.drawable.pause) {
b.setImageResource(R.drawable.play);
b.setTag(R.drawable.play);
activityAnimation.setVisible(false, false);
} else {
b.setImageResource(R.drawable.pause);
b.setTag(R.drawable.pause);
activityAnimation.setVisible(true, false);
}
}
});...
}
これは、私はこれらの古いポストのいくつか気づいた
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/one" android:duration="1000" />
<item android:drawable="@drawable/two" android:duration="1000" />
<item android:drawable="@drawable/three" android:duration="1000" />
<item android:drawable="@drawable/four" android:duration="1000" />
</animation-list>
XML
ファイルの内容ですが、非は答えを持っていました。
How to reset AnimationDrawable(この問題の反対側)
How do I pause frame animation using AnimationDrawable? [Closed]
この現象はAndroidのどのバージョンで発生していますか? – Luksprog
私はGenymotion(Galaxy s5 - 4.4.4 - API19)を使っています。 Androidスタジオ2.2.3、最新SDK – Idan
APIレベルの端末(Lollipop以上)を試して、問題が解決するかどうかを確認してください。AnimationDrawableのコードを見てきましたが、下位バージョンではアニメーションを再起動するだけで、上位バージョンでは現在のフレームからアニメーション化するロジックがあるようです。 – Luksprog