我有一个简单的动画:
<rotate android:fromDegrees="0"
android:toDegrees="180"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="4"
android:repeatMode="reverse"
android:duration="1000"
android:interpolator="@android:anim/linear_interpolator" />
<translate
android:duration="2000"
android:fromXDelta="10%p"
android:toXDelta="90%p"
android:repeatCount="1"
android:repeatMode="reverse"
android:fillAfter="true"/>
我在ImageView
上运行它。我在ImageView
上设置了onclick事件:
imgCorrect1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "explode ");
}
});
以下是我开始制作动画的方法:
Animation anim = AnimationUtils.loadAnimation(this, R.anim.rottrans);
imgCorrect1.startAnimation(Anim1);
问题在于,当动画正在运行时,如果我在动画播放时点击图像,则动画运行时不会调用onclick。
我试图在这个问题上进行搜索,但这些帖子都是为ImageView
- 动画制作动画 - 调用onclick,而不是相反。
我希望我在描述中已经清楚了。我试图提供所有相关代码来解释这个问题。
答案 0 :(得分:1)
您正在使用Animation
API,它会为视图的矩阵设置动画。因此,您会看到原始视图的 ghost 已设置动画,而视图仍位于原始位置。
相反,请使用Animator API。以下是它的外观:
ImageView imageView = ...;
ObjectAnimator rotate = ObjectAnimator.ofFloat(imageView, View.ROTATION, 0, 180);
rotate.setRepeatCount(4);
rotate.setRepeatMode(ValueAnimator.REVERSE);
rotate.setDuration(1000);
rotate.setInterpolator(new LinearInterpolator());
ObjectAnimator translate = ObjectAnimator.ofFloat(imageView, View.TRANSLATION_X, 0, 100);
translate.setRepeatCount(1);
translate.setRepeatMode(ValueAnimator.REVERSE);
translate.setDuration(2000);
AnimatorSet set = new AnimatorSet();
// Play either sequentially or together
set.playSequentially(rotate, translate);
// set.playTogether(rotate, translate);
set.start();