Android のあまり知られていないImageSwitcherを使用して、ImageView で画像の変更をアニメーション化しています。現在、特定のイベント (すべてメイン スレッドで発生) で切り替えられる 2 つの画像 (デフォルトと "ok" 画像) があります。最初の画像はフェード アウトし、2 番目の画像はフェード インします。 .
最初の 2 つのアニメーション (デフォルトから「OK」になり、その後デフォルトに戻る) は問題なくフェード オーバーします。その後、突然、画像が次から次へとフェードアウトしなくなりましたが、ビューがすぐに 2 番目の画像に切り替わり、アニメーションが 2 番目の画像の 2 つのバージョンを重ね合わせて混乱します (これらの画像は半透明の黒で、私が見ることができます)。 2番目の画像がほぼ完全な黒から通常に戻る方法)。
スイッチングは次のように実装されます。
// Initialization in onCreate():
mRefreshImageSwitcher = (ImageSwitcher) findViewById(R.id.main_refresh);
mRefreshImageSwitcher.setFactory(new RefreshButtonViewFactory());
mRefreshImageSwitcher.setImageResource(R.drawable.refresh);
// ...
mRefreshImageSwitcher.setInAnimation(getFadeAnimation(true, 300));
mRefreshImageSwitcher.setOutAnimation(getFadeAnimation(false, 300));
mRefreshImageSwitcher.setImageResource(R.drawable.refresh_ok);
// ...
private Animation getFadeAnimation(boolean in, long durationMillis) {
Animation a = AnimationUtils.loadAnimation(this, in ? android.R.anim.fade_in : android.R.anim.fade_out);
a.setDuration(durationMillis);
return a;
}
または、常に同じ Animation オブジェクトを使用しようとしましたが、何も変わりませんでした。
同じ画像を複数回設定すると、ImageSwitcher が何らかの形で台無しになる可能性はありますか? 他のアイデアはありますか?