1

我實現了一個自定義視圖,當視圖被觸及並釋放時添加一點動畫。 當用戶點擊這個視圖時,我啓動一個縮小視圖的80ms的小動畫。ACTION_CANCEL未解鎖

當手指向上時,會播放相同的動畫(反轉效果)。 視覺效果非常好,只要用戶不會通過移動手指離開視圖,視覺效果就會很好。

因此,當手指離開視圖區域時,我無法接到A​​CTION_CANCEL的任何呼叫,在我的情況下需要回放動畫。

ACTION_UP,ACTION_MOVE和ACTION_DOWN正確調用,但從來沒有ACTION_CANCEL

這裏是我的代碼:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    super.onTouchEvent(event); 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_CANCEL: { 
      Animation anim = new ScaleAnimation(0.9f, 1f, 0.9f, 1f, 
      Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
      anim.setDuration(Utils.ANIM_CLICK_LENGHT); 
      anim.setFillAfter(true); 
      anim.setFillBefore(true); 
      startAnimation(anim); 
      break; 
     } 
     case MotionEvent.ACTION_DOWN: { 
      Animation anim = new ScaleAnimation(1f, 0.9f, 1f, 0.9f, 
      Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
      anim.setDuration(Utils.ANIM_CLICK_LENGHT); 
      anim.setFillAfter(true); 
      anim.setFillBefore(true); 
      startAnimation(anim); 
      break; 
     } 
     case MotionEvent.ACTION_UP: { 
      Animation anim = new ScaleAnimation(0.9f, 1f, 0.9f, 1f, 
      Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
      anim.setDuration(Utils.ANIM_CLICK_LENGHT); 
      anim.setFillAfter(true); 
      anim.setFillBefore(true); 
      startAnimation(anim); 
      break; 
     } 
    } 
    return true; 
} 

回答