開発オプションの[アクティビティを保持しない]がオンのときに正常に動作するアプリがあります。
でもOFFの時は
アプリがバックグラウンドに移行して再開するたびに、onCreate関数が再度呼び出されます。そこで、最後のアプリの状態を再作成しています。
ここで問題となるのは、ユーザーアクションで発生する単純なアニメーションが開始されず、アニメーションハンドラーが呼び出されないことです。
アニメーションが無視されているようです。そして、これは、アクティビティが強制終了されて再度作成された場合にのみ発生します。
そして、最も奇妙な部分は、4つのアニメーションがあり、1つのイメージビュー(開く、閉じる)用に2つ、別のイメージビュー(開く、閉じる)用に2つあることです。
そして、これはオープニングアニメーションでオンリーに発生します。
手伝ってくれませんか。
アニメーションxml(開始/終了アニメーションの1つ用)
redShowアニメーション
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="800"
/>
<scale android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="800">
</scale>
</set>
redHideアニメーション
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="300"
/>
<scale android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="300">
</scale>
</set>
私がものを初期化しているコード(onCreateで)
red = (ImageView) findViewById(R.id.red);
redHide = AnimationUtils.loadAnimation(this, R.anim.red_hide);
redHide.setFillAfter(true);
redHide.setAnimationListener(this);
redShow = AnimationUtils.loadAnimation(this, R.anim.red_show);
redShow.setFillAfter(true);
redShow.setAnimationListener(this);
ハンドラーと私が呼び出しているメソッド
private void showRed() {
red.startAnimation(redShow); //this is the one that is not happening
}
private void hideRed() {
red.startAnimation(redHide);
}
@Override
public void onAnimationEnd(Animation a) {
}
@Override
public void onAnimationRepeat(Animation a) {
}
@Override
public void onAnimationStart(Animation a) {
}
G