Android ViewFlipper 自动动画/循环在最后一个子视图处中断
Android ViewFlipper auto animation / looping breaks at last child view
我制作了一个 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,这使得动画突然而且一点也不流畅。
有人对此问题有任何解决方法吗?
谢谢
最近的 Android 更新似乎解决了问题:
棒棒糖 5.1.1 内部版本# LMY48M
我制作了一个 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,这使得动画突然而且一点也不流畅。
有人对此问题有任何解决方法吗?
谢谢
最近的 Android 更新似乎解决了问题:
棒棒糖 5.1.1 内部版本# LMY48M