gcl*_*cl1 6 android android-animation android-view
我有一个ViewFlipper设置为每5秒自动翻转一次.省略一些细节,它看起来像这样,工作正常:
ViewFlipper flipper = (ViewFlipper) findViewById(R.id.myflipperid);
flipper.setFlipInterval(5000);
flipper.setInAnimation(inFromRightAnimation());
flipper.setOutAnimation(outToLeftAnimation());
flipper.startFlipping();
Run Code Online (Sandbox Code Playgroud)
但是,我有一个案例,我希望自动翻转停在最后一个视图,而不是循环重新开始.ViewFlipper或它继承的任何类都没有循环控制方法.
如何让ViewFlipper在击中最后一个子视图时停止循环查看子视图?
注意:这里给出的答案不适用于我的情况,因为我需要在其列表的末尾捕获ViewFlipper,即不依赖于用户输入.谢谢.
这是我使用的解决方案.正如这里建议的那样,诀窍是监听动画事件的结束,然后检查鳍状肢是否在最后一个视图上.
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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答.
我没有试过这个我自己,但我希望这会有所帮助.
首先,尝试收听viewflipper的翻转事件.因为你正在使用动画.您可以使用此处发布的解决方案:https://stackoverflow.com/a/3813179/1594522
然后,onAnimationEnd(),您可以检查viewflipper是否在其最后一个子视图上.如果它已经在其最后一个子视图上,则调用flipper.stopFlipping().
希望有所帮助!:)
| 归档时间: |
|
| 查看次数: |
6691 次 |
| 最近记录: |