大家好,我是Android Studio的新手,我在做一种骰子游戏。所以这是一个问题,当我单击按钮时它应该播放动画(animation.xml,像滚动骰子效果一样骰子1-6),然后应该显示1-6之间的随机骰子,但是它忽略了(我猜)动画并立即显示随机骰子,所以我想先播放动画,然后在我单击按钮时显示随机骰子
animation.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item
android:drawable="@drawable/d1"
android:duration="200" />
<item
android:drawable="@drawable/d2"
android:duration="200" />
<item
android:drawable="@drawable/d3"
android:duration="200" />
<item
android:drawable="@drawable/d4"
android:duration="200" />
<item
android:drawable="@drawable/d5"
android:duration="200" />
<item
android:drawable="@drawable/d6"
android:duration="200" />
</animation-list>
这是动画和随机骰子代码
rollButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//this animation just doesn't displays
animationDice.start();
//and this code executes immediately
playerScoreInt = rollDice(diceRoll1ImageViewPLAYER, diceRoll2ImageViewPLAYER);
playerScore.setText(Integer.toString(playerScoreInt));
cpuScoreInt = rollDice(diceRoll1ImageViewCPU, diceRoll2ImageViewCPU);
cpuScore.setText(Integer.toString(cpuScoreInt));
winnerChecker();
}
});
}
当我单击按钮时,我想 出现1个动画 2个随机骰子出现 而且我可以分别进行操作,但是当我将它们组合到一个事件中时,只是随机骰子就没有动画
答案 0 :(得分:0)
我认为您正在寻找回调。要使用Kotlin在android中制作动画,您可以尝试执行以下操作:
view.animate()
.rotation(90f)
.scaleY(2f)
.withEndAction(() -> {
... code here
})
.start();
如果您需要更多信息,请查看文档:{{3}}
答案 1 :(得分:0)
我真的不明白你的意思。
如果您希望将骰子上的数字更改几秒钟,并最终获得最终结果,则可以使用CountDownTimer
。
// finish in 3 seconds, 100 millisecond made 1 time
new CountDownTimer(3000, 100) {
Random random = new Random();
@Override
public void onTick(long millisUntilFinished) {
// random in 100 millisecond
mainBinding.tmp.setText(random.nextInt(6) + "");
}
@Override
public void onFinish() {
// final result
mainBinding.tmp.setText(random.nextInt(6) + "");
}
}.start();