如何阻止Android ViewFlipper循环?

如何阻止Android ViewFlipper循环?,android,android-animation,android-view,Android,Android Animation,Android View,我将ViewFlipper设置为每5秒自动翻转一次。撇开一些细节不谈,它看起来是这样的,效果很好: ViewFlipper flipper = (ViewFlipper) findViewById(R.id.myflipperid); flipper.setFlipInterval(5000); flipper.setInAnimation(inFromRightAnimation()); flipper.setOutAnimatio

我将ViewFlipper设置为每5秒自动翻转一次。撇开一些细节不谈,它看起来是这样的,效果很好:

ViewFlipper flipper = (ViewFlipper) findViewById(R.id.myflipperid);

flipper.setFlipInterval(5000);                              
flipper.setInAnimation(inFromRightAnimation());
flipper.setOutAnimation(outToLeftAnimation());

flipper.startFlipping();
但是,我有一种情况,我希望自动翻转在最后一个视图停止,而不是循环重新开始。ViewFlipper或其继承的任何类似乎都没有循环控制方法

如何使ViewFlipper在点击最后一个视图时停止在其子视图中循环


注意:给出的答案不适用于我的情况,因为我需要捕捉列表末尾的ViewFlipper,即不依赖于用户输入。谢谢。

我自己还没有试过,但我希望这会有所帮助

首先,尝试聆听viewflipper的翻转事件。 因为您正在使用动画。您可以使用此处发布的解决方案:

然后,在onAnimationEnd()上,可以检查viewflipper是否位于其最后一个子视图上。 如果它已经在最后一个子视图中,则调用flipper.stopFlipping()


希望有帮助!:)

只需获取列表的大小,然后在if条件下,比如

flipper.stopFlipping()

希望它能这样工作。

这是我使用的解决方案。正如所建议的,技巧是监听动画结束事件,然后检查鳍状肢是否在最后一个视图上

flipper.getInAnimation().setAnimationListener(new Animation.AnimationListener() {

    public void onAnimationStart(Animation animation) {}
    public void onAnimationRepeat(Animation animation) {}
    public void onAnimationEnd(Animation animation) {

        int displayedChild = flipper.getDisplayedChild();
        int childCount = flipper.getChildCount();

        if (displayedChild == childCount - 1) {
            flipper.stopFlipping();
        }
    }
});

谢谢你的回答。

是的,这正是我昨天做的。你的回答比我强,所以我给你打勾!我的实际解决方案发布在下面。你的例子中的“flipperWall”是什么?对不起,我遗漏了声明。在本例中,flipperWall只是一个视图翻转器,如下所示:ViewFlipper flipperWall;。您还需要使用findViewById()或通过编程方式从XML文件初始化它。祝你好运