마스터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월 25일 질문
미트러님이 2015년 6월 25일 수정

2개의 답변

0 추천
잘 되고 잘 안되는 부분 코드라도 보여주셔야죠..
libre2k (7,420 포인트) 님이 2015년 6월 25일 답변
ObjectAnimator/AnimatorSet을 사용하셔서 playSequentially로 하셔도 될 듯 합니다.
애니매이션은 기본적으로 쓰래드에서 동작합니다.
따라서
1번실행;
2번실행;
순으로 코딩을 실실햇을때 1번과 2번이 동시에 진행되고 결과로 2번만 실행되는 현상이 생기는 듯 보입니다.
libre2k님이 재시한 방법이나 아래 분이 추천하신방법들을 활용해서 하나의 애니매이션이 끝났을 때 다음 애니매이션을 시작하게 해보십시오
네 맞습니다 제가 말하고싶은것이었는데 어떻게 해결해야할지 모르겠습니다...ㅠ 이걸 노가다로 하려면 xml파일 30개를 만들면 될거같은데 다른방법이 있을것같아서 질문합니다...
0 추천
onAnimationEnd 이벤트 상속 받아서,

각 애니메이션 단계별로 순차적으로 애니메이션 시작하게 해봐요. 한방에 다 시작해버리면 잘 안될겁니다.
익명사용자 님이 2015년 6월 25일 답변
...