8

Chcę pokazać dwie animacje jednocześnie programowo nie w pliku XML. Powinno to być ROTATE i TRANSLATE jak mogę to zrobić?Android: Tłumaczenie i animacja rotacji jednocześnie

Proszę zasugerować mi jakiś sposób ??????

Oto kod ma:>

ImageView snowImg1 = (ImageView) findViewById(R.id.snowimg1); 
     snowImg1.setVisibility(0); 
     ImageView snowImg2 = (ImageView) findViewById(R.id.snowimg2); 
     snowImg2.setVisibility(0); 
     ImageView snowImg3 = (ImageView) findViewById(R.id.snowimg3); 
     snowImg3.setVisibility(0); 
     ImageView snowImg4 = (ImageView) findViewById(R.id.snowimg4); 
     snowImg4.setVisibility(0); 
     ImageView snowImg6 = (ImageView) findViewById(R.id.snowimg6); 
     snowImg6.setVisibility(0); 
     ImageView snowImg5 = (ImageView) findViewById(R.id.snowimg5); 
     snowImg5.setVisibility(0); 

     View snowArray[] = {snowImg1, snowImg2, snowImg3, snowImg4, snowImg5, snowImg6}; 

     Animation snowMov7 = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f , Animation.RELATIVE_TO_SELF,0.5f); 
     snowMov7.setRepeatCount(Animation.INFINITE); 
     Animation snowMov1 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.1f, Animation.RELATIVE_TO_PARENT, 0.3f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.9f); 
     snowMov1.setDuration(10000); 
     Animation snowMov2 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.3f, Animation.RELATIVE_TO_PARENT, 0.4f, Animation.RELATIVE_TO_PARENT, -0.1f, Animation.RELATIVE_TO_PARENT, 0.9f); 
     snowMov2.setDuration(10100); 
     Animation snowMov3 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.1f, Animation.RELATIVE_TO_PARENT, -0.1f, Animation.RELATIVE_TO_PARENT, 0.9f); 
     snowMov3.setDuration(10200); 
     Animation snowMov4 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.7f, Animation.RELATIVE_TO_PARENT, 0.2f, Animation.RELATIVE_TO_PARENT,-0.1f, Animation.RELATIVE_TO_PARENT, 0.9f); 
     snowMov4.setDuration(10300); 
     Animation snowMov5 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.6f, Animation.RELATIVE_TO_PARENT, 0.7f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.9f); 
     snowMov5.setDuration(10400); 
     Animation snowMov6 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.9f, Animation.RELATIVE_TO_PARENT, 0.9f, Animation.RELATIVE_TO_PARENT, 0.05f, Animation.RELATIVE_TO_PARENT, 0.9f); 
     snowMov6.setDuration(10500); 

     Animation movArray[] = {snowMov1,snowMov2, snowMov3, snowMov4, snowMov5, snowMov6,snowMov7}; 

     for(int i=0;i<6;i++) 
     { 
      movArray[i].reset(); 
      movArray[i].setFillAfter(true); 
      movArray[i].setAnimationListener(this); 
      snowArray[i].startAnimation(movArray[i]);  
      snowArray[i].startAnimation(movArray[6]); 
     } 

Możemy użyć startAnimation dwukrotnie w programie ??? Proszę mi pomóc?

Odpowiedz

17

Zrobiłem to za pomocą ANIMATIONSET możemy to zrobić.

AnimationSet snowMov1 = new AnimationSet(true); 
     RotateAnimation rotate1 = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f , Animation.RELATIVE_TO_SELF,0.5f); 
     rotate1.setStartOffset(50); 
     rotate1.setDuration(9500); 
     snowMov1.addAnimation(rotate1); 
     TranslateAnimation trans1 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.1f, Animation.RELATIVE_TO_PARENT, 0.3f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.9f); 
     trans1.setDuration(12000); 
     snowMov1.addAnimation(trans1); 

W ten sposób możemy wykonać zestaw dla wielu animacji.