2012-06-17 4 views
1

28 개의 다른 회전 애니메이션을 28 개의 다른 뷰에 할당하고 작업이 시작될 때 애니메이션을 시작하고 싶습니다. 애니메이션은 모두 무작위 startOffset과 Duration을 가져야합니다. 이 코드로 시도했지만 모든 애니메이션의 값이 같아 보입니다.여러 개의 ImageView에서 애니메이션 회전

RotateAnimation rotate = new RotateAnimation(0.0f, 360.0f, 
     Animation.RELATIVE_TO_SELF, 0.9f, Animation.RELATIVE_TO_SELF, 0.5f); 

ImageView imageView; 

Random r = new Random(); 
int delayOffset = 0; 
int rotationDuration = 200; 


for (int i = 0; i < ids.length; i++) { 

    rotate.reset(); 

    imageView = (ImageView) findViewById(ids[i]); 
    imageView.clearAnimation(); 

    delayOffset = r.nextInt(500 - 0); 
    rotationDuration = r.nextInt(10000 - 200) + 200; 


    rotate.setStartOffset(delayOffset); 
    rotate.setDuration(rotationDuration); 


    imageView.startAnimation(rotate); 
} 

내가 뭘 잘못하고 있니?

+0

for 루프 내에서 RotateAnimation의 새 인스턴스를 만들려고 시도하십시오. – L7ColWinters

답변

0

애니메이션의 인스턴스가 동일하므로 모든보기가 가장 최신 값으로 시작됩니다.

각보기에 대해 완전히 새로운 애니메이션을 만들어야합니다.

+0

마치 작동 할 것 같은 소리입니다. 나중에 나중에 시도하겠습니다. 하지만 28 개의 애니메이션 인스턴스를 사용하는 경우에는 2 개의 속성 만 변경해야하는 불편 함이 있습니다. – Peter

+0

순수 데이터 클래스 일 뿐이므로 괜찮습니다. API 11 이상 만 타겟팅하는 경우 새로운 애니메이션 API를 사용할 수 있습니다.이 API는 사용하기가 더 쉽지만 사용 해본 적이 없습니다. 그것은 GPU를 사용하기 때문에 훨씬 빠르고 부드러워 야합니다. –