অ্যানিমেশন ইভেন্ট অ্যান্ড্রয়েড শেষ


90

আমার একটি দৃশ্যে একটি অদ্ভুত অ্যানিমেশন রয়েছে (যা কোনও খণ্ডের অভ্যন্তরে রয়েছে) এবং অ্যানিমেশনটি প্রতিবারই ঘটে, এরপরে দৃশ্যের পুনরায় চিত্রটি পুনরায় আঁকায়। আমি প্রায় কাজ খুঁজে পেয়েছি view.SetVisibility(View.GONE)। তবে এটি অ্যানিমেশনটি শেষ হওয়ার অপেক্ষা করে না। অ্যানিমেশন শেষ হয়ে গেলেই আমি এই সেটভিজিবিলিটি কোডটি কার্যকর করতে চাই। এটি করার সর্বোত্তম উপায় কী?


আপনি কীভাবে অ্যানিমেশনটি প্রদর্শন করছেন তা আপনার কোড পোস্ট করুন ....
ললিত পপতানি

উত্তর:


175

আপনি আপনার অ্যানিমেশন বস্তুর মতো অ্যানিমেশন শ্রোতাদের যুক্ত করতে পারেন

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

4
অ্যানিমেশনটি প্রগতিতে থাকা অবস্থায় আপনি যদি ফেইডআউট অ্যানিমেশনটি আবার শুরু করতে আটকাতে চান if (!anim.hasStarted() || anim.hasEnded())তবে অ্যানিমেশনটি এখনও চলছে কিনা তা সনাক্ত করতে ব্যবহার করুন ।
39

36

কার্যকরীভাবে গৃহীত উত্তর হিসাবে একই তবে আরও সংক্ষিপ্তভাবে:

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

উপভোগ করুন :)


4
পরিষ্কার এবং ওয়ান-লাইনার শীর্ষ উত্তর! ল্যাম্বডা ব্যবহারের মাধ্যমে সহজেই সংজ্ঞায়িত করা যায়.withEndAction(() -> theView.setVisibility(View.GONE));
দ্য ব্যাগার

4
মনে রাখবেন যে এটি এপিআই স্তরের 16 (4.1) এবং তার বেশি।
টমমি

আশ্চর্য সমাধান, আমার বন্ধু। ধন্যবাদ!
ভ্লাদ ইভচেনকো

গুরুত্বপূর্ণ তথ্য: - অ্যানিমেশনটি স্বাভাবিকভাবে শেষ হয়ে গেলে অ্যাকশনটি কেবল চালানো হয়, যদি ভিউপ্রোপার্টি অ্যানিমেটার সেই অ্যানিমেশনের সময় বাতিল করা হয়, তবে রান্নেবল চলবে না।
সার্থক_এসজি

4
চলমান অবস্থায় নেভিগেশন উপাদান ব্যবহার করার সময়, কবজির মতো কাজ করে। (অ্যানিমেশন শ্রোতা alwys ক্র্যাশ যখন আমি এনএভি উপাদান সহ নেভিগেট করা হয়েছিল।)
Luigi_Papardelle


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()
লঙ্গি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.