2017-02-03 108 views
1

我想動畫一個ImageButton,以便它每次點擊時都會移動一點點。由於某些原因,動畫只能使用一次。動畫只能工作一次

代碼:

public void ballClicked(View v) { 

     imgBtn.clearAnimation(); 
     imgBtn.animate().translationX(50).setDuration(500).start(); 
     imgBtn.animate().translationY(50).setDuration(500).start(); 

     oldX = oldX+50; 
     oldY = oldY+50; 
     imgBtn.setClickable(false); 

     // Using this as Animation Listener doesn't trigger when the animation finish 
     new Handler().postDelayed(new Runnable() { 
      public void run() { 
       imgBtn.setX((float)oldX+50); 
       imgBtn.setY((float)oldY+50); 
       imgBtn.setClickable(true); 
      } 
     }, 500); 

    }` 
+0

你是否想根據時間或點擊動畫。是指在特定時間動畫應該發生還是當用戶點擊時? – W4R10CK

+0

@Slamit檢查我的答案^ _^ –

+0

我想按照clic動畫。因爲我不能讓動畫處理程序在這裏工作,因爲它在另一個類上工作... @Charu,當Adroid Studio完成更新時,我會嘗試:( – Slamit

回答

1

這將工作!

public void ballClicked(View v) { 

    imgBtn.clearAnimation(); 

    oldX = oldX + 50; 
    oldY = oldY + 50; 

    imgBtn.animate().translationX(oldX).setDuration(500).start(); 
    imgBtn.animate().translationY(oldY).setDuration(500).start(); 

    new Handler().postDelayed(new Runnable() { 
     public void run() { 
      imgBtn.setX((float) oldX + 50); 
      imgBtn.setY((float) oldY + 50); 

     } 
    }, 500); 


} 
+0

)這將意味着值通過翻譯X是基於原來的位置,它並不會讓我覺得,但我會嘗試。 – Slamit

+0

@Slamit它使完美的意識,它應該移動嘗試,讓我知道你做的是第二招和其他動作是爲同樣的位置,所以你不會在第一個動畫之後看到任何動畫 –

+1

確定閱讀文檔我確實知道它(我應該更頻繁地準備好它):translationX屬性被動畫到指定的值所以我應該但我的座標在那裏,謝謝你的幫助。投注將在我的情況下是translationByX。 – Slamit