当答案为假时,我创建了一个旋转动画,它会摇动CardView,
但是,直到我更改视图状态(例如
public void checkAnswer(boolean isTrue) {
if (isTrue == questionList.get(questionCount).getAnswer()) {
Toast.makeText(this, R.string.correct_answer, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, R.string.wrong_answer, Toast.LENGTH_SHORT).show();
shakeAnimation();
}
}
public void nextQuestion() {
if (questionCount < questionList.size()) {
question_textView.setText(questionList.get(++questionCount).getQuestion());
question_counter.setText((questionCount + 1) + "/" + questionList.size());
}
}
public void shakeAnimation() {
Animation shake = AnimationUtils.loadAnimation(MainActivity.this, R.anim.shake_animation);
cardView.setAnimation(shake);
}
答案 0 :(得分:0)
您仅设置动画。因此无论何时绘制视图或重新创建视图,动画都将起作用。
您必须在视图上调用开始动画方法才能显示动画。
例如,您的案例代码为
public void shakeAnimation() {
Animation shake = AnimationUtils.loadAnimation(MainActivity.this, R.anim.shake_animation);
cardView.startAnimation(shake);
}
setAnimation和startAnimation方法之间的区别
-SetAnimation
将视图添加到视图组时,将调用动画。添加视图后,动画将不会被调用
-StartAnimation
即使已添加视图,动画也会一直被调用。
注意::StartAnimation内部调用setAnimation方法。