1

我有一個簡單的動畫:動畫期間點擊查看沒有反應

<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

嘗試使用MotionEvent設置onTouchListener。 ACTION_DOWN –

+0

我會研究一下。沒有與此混淆。將不得不做一些研究。感謝您的快速回復。 – Will

回答

1

您正在使用Animation API,它爲視圖的矩陣提供動畫。因此,您會看到正在動畫的原始視圖的幽靈,而視圖仍位於原始位置。

而是使用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(); 
 
+0

只是爲了提供更新,此解決方案以我想要的方式工作。謝謝!我有upvoted。 – Will

+0

嘿,請問。如果這回答你的問題 - 將其標記爲已接受。 – azizbekian