2014-04-15 17 views
9

Android KitKat kullanıyorum ve bu beklendiği gibi çalışmıyor gibi görünüyor. Biraz gecikme sonrasında başlaması gereken bir Animasyon Ayarı var ama animasyon başladığında (gecikmeden sonra) biraz harekete geçmek istiyorum. AnimatorSet, start() öğesini çağırdıktan hemen sonra dinleyicilerin üzerindeAnimationStarted'i çağırıyor gibi görünüyor. AşağıdaAnimatorSet setStartDelay çağrısı onAnimationStart

örnek kod: Bu durumda

AnimatorSet set = new AnimatorSet(); 
set.playTogether(
    ObjectAnimator.ofFloat(obj, "x", 10), 
    ObjectAnimator.ofFloat(obj, "y", 10)); 
set.setStartDelay(5000); 
set.setDuration(1000) 

set.addListener(new AnimatorListenerAdapter() 
{ 
    @Override 
    public void onAnimationStart(Animator animation) 
    { 
     // do sth 
    } 
}); 

set.start(); 

dinleyici derhal yerine gecikmeli ait çağrılır. Bu soruna geçici bir çözüm bulmak için dinleyiciyi playTogether'a iletilen animatörlere ekleyerek beklenen sonucu verdiğini ve gerçekte yapıp yapmadığını kontrol ettim. Bu bir hata mı?

+0

ama sen gecikme için TimerTask veya Thread.sleep kullanabilirsiniz istediklerini almak için. İşleyici aynı zamanda başka bir yaklaşımdır – Nepster

cevap

3

bunun için başka bir geçici çözüm geçerli:

@Override 
public void onAnimationStart(Animator animator) { 
    rootView.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      // todo 
     } 
    }, set.getStartDelay()); 
} 
o cevabı olmayabilir