2013-01-19 26 views
6

Bir RelativeLayout'ta alfa ve çeviri yapmaya çalışıyorum. Her ikisi de tanımlayın: Aynı Layout'ta iki animasyonu başlatın

AlphaAnimation alpha; 
alpha = new AlphaAnimation(0.0f, 1.0f); 
alpha.setDuration(1500); 
alpha.setFillAfter(true); 

TranslateAnimation translate; 
translate = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,                  
       Animation.RELATIVE_TO_SELF, 0, 
       Animation.RELATIVE_TO_SELF, 1, 
       Animation.RELATIVE_TO_SELF, 0); 
translate.setDuration(1000); 

yüzden

RelativeLayout.startAnimation(translate); 
RelativeLayout.startAnimation(alpha); 

sorun bu durumda, sadece alfa animasyon çevirisini başlatmak değil ki benim RelativeLayout içinde animasyon başlar. Birisi bana yardım edebilir mi? Ben


ben soruyu çözmek (benim durumumda Bağıl Düzen) aynı nesneye aynı anda iki farklı animasyonlar başlayabilirsiniz sorudur. Bunu ekledi: en kısa sürede ilk animasyon başlar başlamaz, ikincisi bunu biter ve kendisini başlar çünkü

AnimationSet animationSet = new AnimationSet(true); 
animationSet.addAnimation(alpha); 
animationSet.addAnimation(translate); 

RelativeLayout.startAnimation(animationSet); 

cevap

5

Geçerli kod, çalışmaz. Bu yüzden bitene kadar beklemelisin.

bu deneyin:

translate.setAnimationListener(new AnimationListener() { 

    public void onAnimationStart(Animation animation) { 
     // TODO Auto-generated method stub 

    } 

    public void onAnimationRepeat(Animation animation) { 
     // TODO Auto-generated method stub 

    } 

    public void onAnimationEnd(Animation animation) { 
     // TODO Auto-generated method stub 
     RelativeLayout.startAnimation(alpha); 
    } 
}); 

aynı anda bunları çalıştırmak istiyorsanız

, ben size res/Deriden/klasörde bir animation.xml dosyası oluşturmak öneririm.

Örnek:

<?xml version="1.0" encoding="utf-8"?> 
<set 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<scale 
android:fromXScale="1.0" 
android:fromYScale="1.0" 
android:toXScale=".75" 
android:toYScale=".75" 
android:duration="1500"/> 
<rotate 
android:fromDegrees="0" 
android:toDegrees="360" 
android:duration="1500" 
android:pivotX="50%" 
android:pivotY="50%" /> 
<scale 
android:fromXScale=".75" 
android:fromYScale=".75" 
android:toXScale="1" 
android:toYScale="1" 
android:duration="1500"/> 
</set> 

Java Kodu:

http://developer.android.com/reference/android/view/animation/AnimationSet.html

için: Aynı anda iki animasyon çalıştırmak isterseniz animasyon kümesini kullanabilirsiniz

Animation multiAnim = AnimationUtils.loadAnimation(this, R.anim.animation); 
    RelativeLayout.startAnimation(multiAnim); 
7

exeample;

as = new AnimationSet(true); 
as.setFillEnabled(true); 
as.setInterpolator(new BounceInterpolator()); 

TranslateAnimation ta = new TranslateAnimation(-300, 100, 0, 0); 
ta.setDuration(2000); 
as.addAnimation(ta); 

TranslateAnimation ta2 = new TranslateAnimation(100, 0, 0, 0); 
ta2.setDuration(2000); 
ta2.setStartOffset(2000); // allowing 2000 milliseconds for ta to finish 
as.addAnimation(ta2); 
İlgili konular