2017-02-03 90 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