2017-02-03 1 views
1

이미지 버튼을 클릭 할 때마다 조금씩 움직 이도록 애니메이션을 적용하려고합니다. 그러나 어떤 이유로 애니메이션은 한 번만 작동합니다.애니메이션이 한 번만 작동합니다.

코드 :

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

진부한대로 애니메이션을 만들고 싶습니다. 게시물 지연은 여기에 있습니다. 애니메이션 처리기를 다른 클래스에서 작동하게 만들 수 없기 때문에 여기에 있습니다 ... @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

그 값은 translationX는 원래의 위치를 ​​기반으로 합니다만, 그것은 나에게 의미가 없지만 시도 할게요. – Slamit

+0

@Slamit 그것은 완벽한 감정을 만들어 내고 움직여야합니다. 당신이 한 행동이 두 번째 행동이고 다른 행동이 같은 위치에 있기 때문에 첫 번째 애니메이션 바로 다음에 애니메이션이 보이지 않을 것입니다. –

+1

문서를 읽는 것이 좋습니다. 실제로 준비해야합니다 (더 자주 준비해야합니다 ...) : translationX 속성이 지정된 값으로 애니메이션됩니다. 하지만 내 coord. 도움을 주셔서 감사합니다. 베츠는 내 경우에 번역 BXX 것입니다. – Slamit

관련 문제