2013-11-27 17 views
28

किया जाता है अभी मैं जाँच जब प्रगति 100 तक पहुँच गया है के आधार पर अपना ValueAnimator के अंत का पता लगाने कर रहा हूँ ...का पता लगाने जब ValueAnimator

//Setup the animation 
ValueAnimator anim = ValueAnimator.ofInt(progress, seekBar.getMax()); 

//Set the duration 

anim.setDuration(Utility.setAnimationDuration(progress)); 

anim.addUpdateListener(new AnimatorUpdateListener() 
{ 

    @Override 
    public void onAnimationUpdate(ValueAnimator animation) 
    { 
     int animProgress = (Integer) animation.getAnimatedValue(); 

     if (animProgress == 100) 
     { 
      //Done 
     } 

     else 
     { 
      seekBar.setProgress(animProgress); 
     } 
    } 
}); 

इस सही तरीका है? मैंने दस्तावेज़ों के माध्यम से पढ़ा और जब यह पूरा हो जाता है तो किसी भी प्रकार की श्रोता या कॉलबैक नहीं मिला। मैंने isRunning() का उपयोग करने की कोशिश की लेकिन यह भी काम नहीं किया।

उत्तर

88

आप की तरह कुछ कर सकते हैं:

ValueAnimator anim = ValueAnimator.ofInt(progress, seekBar.getMax()); 
anim.setDuration(Utility.setAnimationDuration(progress)); 
anim.addUpdateListener(new AnimatorUpdateListener() 
{ 
    @Override 
    public void onAnimationUpdate(ValueAnimator animation) 
    { 
     int animProgress = (Integer) animation.getAnimatedValue(); 
     seekBar.setProgress(animProgress); 
    } 
}); 
anim.addListener(new AnimatorListenerAdapter() 
{ 
    @Override 
    public void onAnimationEnd(Animator animation) 
    { 
     // done 
    } 
}); 
anim.start(); 

[] के

+1

यही मैं के लिए क्या देख रहा था है, धन्यवाद – Tyler

+0

इतना धन्यवाद :) – Alex

+0

यह एक बहुत ही पुराने विषय खेद है, , लेकिन मुझे इससे संबंधित समस्या है। मैं अपनी एनीमेशन समाप्त होने पर पता लगाने के लिए श्रोता का उपयोग कर रहा हूं, लेकिन वास्तविक एनीमेशन पूरा होने से पहले यह निष्पादित हो रहा है। क्या कोई और इस में चला है? मैंने कस्टम दृश्य को एनिमेट करने के लिए कुछ समान विषयों के साथ विषयों को देखा है और सुझाव 'एनीमेशन फ़िनिश' विधि को ओवरराइड करना था, लेकिन यह मान एनीमेटर के लिए काम नहीं करता है। –

संबंधित मुद्दे