Android 循环中的AnimationListener?(每次等待动画完成)
更新:让我的问题更清楚:我应该如何构造循环,以确保在上一次迭代的动画结束之前不会发生下一次迭代 所以我对在安卓系统中使用动画非常陌生。我有一个简单的动画,每次使用Android 循环中的AnimationListener?(每次等待动画完成),android,animation,Android,Animation,更新:让我的问题更清楚:我应该如何构造循环,以确保在上一次迭代的动画结束之前不会发生下一次迭代 所以我对在安卓系统中使用动画非常陌生。我有一个简单的动画,每次使用placeTile方法放置一个tile时都会运行 代码如下所示: public void setUpPlayers(){ //Toast for setting turn order smallToast(getResources().getString(R.string.deciding_turn_order));
placeTile
方法放置一个tile时都会运行
代码如下所示:
public void setUpPlayers(){
//Toast for setting turn order
smallToast(getResources().getString(R.string.deciding_turn_order));
for (int i = 0; i < players.length; i++) {
if(i == 0){
players[i] = new Player("HUMAN", 6000);
players[i].setType(Player.Type.HUMAN);
} else {
players[i] = new Player(playerNames[i], 6000);
players[i].setType(Player.Type.COMPUTER);
}
players[i].drawTile(1);
TextView nameText = (TextView) findViewById(R.id.current_player_text);
nameText.setText(players[i].getName());
//find the ID for the tile just placed
String tileID = players[i].findTileIdByIndex(0);
placeTile(tileID, i); //Tile ID being placed, and the index of the player placing it
}
}
public void setUpPlayers(){
//设置轮次的吐司
smallToast(getResources().getString(R.string.Demining_turn_order));
for(int i=0;i
我遇到的问题是,我希望循环不会执行下一次迭代,直到先前放置的平铺的动画完成。我该怎么做?我知道通常您必须设置AnimationLister并等待动画完成,但我不确定如何执行该操作,因为A)动画是正在放置的平铺的一部分,并且具有私有范围,B)循环希望立即执行。如何使用侦听器“保持”循环
我想到的一个想法是将setUpPlayers()
方法重新构造为递归算法,每次迭代都调用动画,但该方法的重复在AnimationListener内部调用。不过,递归算法似乎有点过头了。有什么想法吗?实现这一目标的最佳、最简单的方法是什么
提前感谢,
JRad坏的在我的项目中,我有一个类似的情况,我还将我的min sdk设置为8,因此我使用这个库来拥有与最新更新(Animator类)相同的功能 图书馆- 我的代码:
private class MyAnimationListener implements Animator.AnimatorListener{
ObjectAnimator spinningAnimation;
@Override
public void onAnimationStart(Animator animation) {
spinningAnimation = ObjectAnimator.ofFloat(playerSpinner, "rotationY", degrees); //In my case I just flip a coin
spinningAnimation.setDuration(25);
spinningAnimation.addListener(new MyAnimationListener());
}
@Override
public void onAnimationEnd(Animator animation) {
if(repeatCount>0){
spinningAnimation.setTarget(playerSpinner);
spinningAnimation.start();
}
}
@Override
public void onAnimationCancel(Animator animation) {}
@Override
public void onAnimationRepeat(Animator animation) {}
}
如果您需要一些帮助来更好地理解,只需在评论中提问:)您对min sdk的要求是什么?我熟悉NineoAndRoid,但这不是我的问题。如有必要,我可以设置自定义事件处理。我的问题是,由于动画位于循环内部,因此无法设置动画事件处理程序并使循环暂停。不管在循环内部设置了什么事件处理,循环都会继续重复。我的问题是:我应该如何构造循环,以确保下一次迭代不会发生,直到上一次迭代的动画结束。@JRadtheBad仅调用结束动画的开始并不能做到这一点?如果将动画侦听器设置为在动画结束时开始序列,则可以使用布尔值或某些逻辑来不调用开始。。。对不起,如果我不理解你的问题,问题是很多其他事情都发生在这个循环中。我实例化玩家,设置初始资金,并决定名字。我不能/不应该将所有这些都放在事件侦听器中。我必须进行的最终和静态调整的数量似乎很荒谬。这不仅仅是让一个动画背靠背地发生,而是在上一个动画完成之前不启动下一个动画或设置下一个播放器。for循环希望执行到底,并且不会通过设置侦听器而停止。它会不断重复。也许你已经解决了这个问题,而我只是不理解答案/