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