마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

아래글 코드첨부해서 올립니다, 연속 애니메이션입니다.

0 추천

이미지뷰를 애니메이션으로 이동을 시키려 합니다.

[   ] - [   ] - [   ] - [   ] - [   ] - [   ]

 

처럼 환형으로 된 칸이 있다고 치면

처음엔 [  1 ] - [ 2  ] - [ 3  ] - [ 4  ] - [ 5  ] - [ 6  ]

하고 버튼을 한번 누르면

[  2 ] - [ 3  ] - [ 4  ] - [ 5  ] - [ 6  ] - [ 1  ]로 이동하는 모션이 보여지면서 이동하게 됩니다.

한칸이동하는건 잘 보여지면서 문제가 없는데

두칸이상 을 이동할때가 문제입니다...

예를들어 3칸을 이동한다하면

[  1 ] - [ 2  ] - [ 3  ] - [ 4  ] - [ 5  ] - [ 6  ] 에서  [  2 ] - [ 3  ] - [ 4  ] - [ 5  ] - [ 6  ] - [ 1  ]이된후에 [  3 ] - [ 4  ] - [ 5  ] - [ 6  ] - [ 1  ] - [ 2 ]로

이동하는 모션이 각각 보여야하는데

[  2 ] - [ 3  ] - [ 4  ] - [ 5  ] - [ 6  ] - [ 1  ]에서 [  3 ] - [ 4  ] - [ 5  ] - [ 6  ] - [ 1  ] - [ 2 ]로가는 모션만 보이게 됩니다.

마지막 모션만 애니메이션으로 보여준다는 겁니다... 이문제를 어떻게 해결해야 하나요?

코드를 아래에 첨부하겠습니다.

public void test_click(View v)  //버튼 클릭 했을 시 애니메이션 작동
{
    img[0].startAnimation(Category_flowAnim1);     //카테고리 flow 애니메이션 시작
    img[1].startAnimation(Category_flowAnim2);
    img[2].startAnimation(Category_flowAnim3);
    img[3].startAnimation(Category_flowAnim4);
    img[4].startAnimation(Category_flowAnim5);
    img[5].startAnimation(Category_flowAnim6);

    for(int i=5; i>0; i--)
    {
        Swap(img[i],img[i-1],i);
    }
}

public void test2_click(View v)  //버튼 클릭 했을 시 애니메이션 작동
{
    test_click(v);
    test_click(v);
}
테스트클릭을 누르면 누를때마다 계속 버튼들이 한칸씩 움직이고 그자리에 멈춰서있습니다. 이것은 원하는대로 제대로 작동 합니다.
 
테스트2클릭을 누르면 버튼을 누르면 한칸 움직인곳에서 시작하여 한칸을 움직입니다. 위치의결과는 원하는 값이지만
 
 
제가 원하는것은 테스트2클릭을 누르면 테스트클릭이 한번된다음 또한번 되서 총 두번모두 움직이는 모션을 보려고 합니다.
 
테스트2클릭처럼 함수를 저렇게 해주면 안되나요?
저안에 img[0].startAnimation(Category_flowAnim1); //카테고리 flow 애니메이션 시작
 
    img[1].startAnimation(Category_flowAnim2);
    img[2].startAnimation(Category_flowAnim3);
    img[3].startAnimation(Category_flowAnim4);
    img[4].startAnimation(Category_flowAnim5);
    img[5].startAnimation(Category_flowAnim6);

    for(int i=5; i>0; i--)
    {
        Swap(img[i],img[i-1],i);
    }
를 두번 넣어도 똑같은 결과가 나옵니다.. 역시 마지막 한번의 모션을 보여줍니다...
스레드때문에 동시에 되는것같은데,,,  이걸 두번 이동하는것 모두 볼 수 있나요?
 
미트러 (290 포인트) 님이 2015년 6월 26일 질문

1개의 답변

0 추천
 
채택된 답변
한가지방법은 지금  test_click 을 2번하시는데요

지금의 test_click은 별도함수 예를들면  my_animation_start 정도로 만드시구

실애니메이션인  Catatory_flowAnim1...  등이 특별한 값에 영향을 받아서 길이를 변경할수 있게 바꾸는것입니다.

예를들면 각도로 움직인다면

mAngle 변수를 받아서 변경되게 하고 첫번째  test_click  의 각도값이 10이면 test_click2는 20 을 적용하고 my_animation_start  를 실행하게요.

다른방법은 OnAnimationEnd 을 이용하는 방법인데요

각애니매이션의 반복횟수 변수를 만드시구 OnAnimationEnd에서 반복횟수를 -카운팅하시면서 저 반복횟수가 0이상이면 다시 해당애니매이션을 스타트 시키는 방법 정도가 있을 듯하내요.
컴러기 (22,230 포인트) 님이 2015년 6월 26일 답변
미트러님이 2015년 6월 26일 채택됨
감사합니다 해결했습니다
...