我使用Android的鲜为人知的ImageSwitcher来动画ImageView中的图像变化。目前,有2个图像(默认和" ok和#34;图像)在某些事件上切换(所有发生在主线程上) - 第一个图像淡出,而第二个图像淡入。这个&# 39; ImageSwitcher应该如何工作。
前2个动画(从默认值到#34; ok"再回到默认值)渐渐消失。然后,突然,图像不再从一个到另一个淡化,但是视图立即切换到第二个图像,并且动画在第二个图像的两个重叠版本周围混乱(这些图像是半透明的黑色,我可以看到第二张图像是如何从几乎全黑变回正常的。)
切换是这样实现的:
// 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;
}
或者,我试图总是使用相同的动画对象,但这并没有改变任何东西。
是否有可能不止一次地设置相同的图像会弄乱ImageSwitcher?还有其他想法吗?
答案 0 :(得分:1)
您没有写下如何更改事件中的图像,但有一件事是确保您使用mRefreshImageSwitcher.setImageResource()
而非mRefreshImageSwitcher.setBackgroundResource()
因为设置背景不会播放动画