我制作了一个ViewFlipper来模拟幻灯片组件连续循环播放幻灯片。 我把它配置为:
mViewFlipper.setAnimateFirstView(true);
mViewFlipper.setAutoStart(true);
在最后一张幻灯片(或子视图)之前,一切正常。 此时第一张幻灯片突然出现而没有滑动!!!
我检查了ViewFlipper和ViewAnimation源代码,发现了以下内容:
void showOnly(int childIndex, boolean animate) {
final int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
if (i == childIndex) {
if (animate && mInAnimation != null) {
child.startAnimation(mInAnimation);
}
child.setVisibility(View.VISIBLE);
mFirstTime = false;
} else {
if (animate && mOutAnimation != null && child.getVisibility() == View.VISIBLE) {
child.startAnimation(mOutAnimation);
} else if (child.getAnimation() == mInAnimation)
child.clearAnimation();
child.setVisibility(View.GONE);
}
}
}
正如您所看到的,此方法始终以动画输入的最低索引开始。
例如,如果我有5张幻灯片:
当幻灯片#4可见并且应该被幻灯片#0替换时,幻灯片#0在幻灯片#4被动画化之前被动画化,这使得动画突然变得不平滑。
有没有人解决这个问题呢?
由于