1

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 が何らかの形で台無しになる可能性はありますか? 他のアイデアはありますか?

4

1 に答える 1

1

イベント内で画像を変更する方法を書いているわけではありませんが、背景の設定がアニメーションを再生 しmRefreshImageSwitcher.setImageResource()ない原因とならないことを確認してください。mRefreshImageSwitcher.setBackgroundResource()

于 2013-01-22T08:42:10.753 に答える