एंड एनिमेशन इवेंट एंड्रॉइड


90

मेरे पास एक दृश्य में एक फीका एनीमेशन है (जो एक टुकड़े के अंदर है), और हर बार एनीमेशन होता है, इसके बाद यह दृश्य फिर से खुद को फिर से बनाता है। मुझे एक काम करते हुए पाया गया view.SetVisibility(View.GONE)। लेकिन यह एनीमेशन खत्म होने का इंतजार नहीं करता है। मैं एनीमेशन समाप्त होने के बाद ही इस setVisibility कोड को निष्पादित करना चाहूंगा। उसे करने का सबसे अच्छा तरीका कौन सा है?


अपने कोड को पोस्ट करें कि आप एनीमेशन कैसे दिखा रहे हैं ....
ललित पोपटानी 30'11

जवाबों:


171

आप अपने एनीमेशन ऑब्जेक्ट की तरह एनीमेशन श्रोता को जोड़ सकते हैं

anim.setAnimationListener(new Animation.AnimationListener(){
    @Override
    public void onAnimationStart(Animation arg0) {
    }           
    @Override
    public void onAnimationRepeat(Animation arg0) {
    }           
    @Override
    public void onAnimationEnd(Animation arg0) {
    }
});

5
यदि आप फ़ेडआउट एनीमेशन को फिर से शुरू करने के लिए रोकना चाहते हैं जबकि एनीमेशन जारी है, if (!anim.hasStarted() || anim.hasEnded())तो यह पता लगाने के लिए उपयोग करें कि क्या एनीमेशन अभी भी चल रहा है।
theceshopsensation

34

कार्यात्मक रूप से स्वीकृत उत्तर के समान ही लेकिन बहुत अधिक संक्षिप्त तरीके से:

                           /* Add/Remove any animation parameter */
theView.animate().alpha(0).setDuration(2000).withEndAction(new Runnable() {
    @Override
        public void run() {
            theView.setVisibility(View.GONE);
        }
    });

का आनंद लें :)


2
स्पष्ट और एक-लाइनर। शीर्ष उत्तर! लैंबडा के उपयोग के साथ सरलता से किया जा सकता है.withEndAction(() -> theView.setVisibility(View.GONE));
theBugger

2
ध्यान रखें कि यह एपीआई स्तर 16 (4.1) और उससे अधिक है।
टॉमी

अद्भुत समाधान, मेरे दोस्त। धन्यवाद!
Vlad Ivchenko

महत्वपूर्ण जानकारी: - कार्रवाई केवल तभी चलती है जब एनीमेशन सामान्य रूप से समाप्त हो जाता है, अगर ViewPropertyAnimator उस एनीमेशन के दौरान रद्द हो जाता है, तो रन करने योग्य नहीं चलेगा।
सार्थक_सग

रननेबल में नेविगेशन घटक का उपयोग करते समय, एक आकर्षण की तरह काम करता है। (एनीमेशन श्रोता जब मैं नौसेना के घटक के साथ नेविगेट कर रहा था तब दुर्घटनाग्रस्त हो गया।)
लुइगी_पार्डेले


9

बस अपनी एनीमेशन ऑब्जेक्ट लें और उसमें एनीमेशन श्रोता जोड़ें। यहाँ उदाहरण कोड है:

rotateAnimation.setAnimationListener(new AnimationListener() {

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

            }

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

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub

**// WRITE HERE WHATEVER YOU WANT ON THE COMPLETION OF THE ANIMATION**


            }
        });

1

कोटलिन के लिए उदाहरण

var fadeOutImage = findViewById<ImageView>(R.id.fade_out_Image)
    val fadeOutAnimation = R.anim.fade_out_animation
    val animation = AnimationUtils.loadAnimation(this, fadeOutAnimation)
    fadeOutImage.startAnimation(animation)

    animation.setAnimationListener(object : Animation.AnimationListener {
        override fun onAnimationStart(p0: Animation?) {
//                not implemented
        }

        override fun onAnimationRepeat(p0: Animation?) {
//                not implemented
        }

        override fun onAnimationEnd(p0: Animation?) {
            fadeOutImage.visibility = View.INVISIBLE
        }
    })

आप कुछ पंक्तियों का उपयोग करके बचा सकते हैंfade_out_Image.animate().alpha(0f).setDuration(100L).withEndAction {fade_out_Image.visibility = View.GONE}.start()
longi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.