[android] 종료 애니메이션 이벤트 android

뷰 (조각 내부에 있음)에 페이드 아웃 애니메이션이 있으며 애니메이션이 발생할 때마다 뷰가 다시 그려집니다. 나는 view.SetVisibility(View.GONE). 그러나 애니메이션이 끝날 때까지 기다리지 않습니다. 애니메이션이 완료된 후에 만이 setVisibility 코드를 실행하고 싶습니다. 이를 수행하는 가장 좋은 방법은 무엇입니까?



답변

다음과 같이 애니메이션 객체에 애니메이션 리스너를 추가 할 수 있습니다.

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


답변

허용되는 답변과 기능적으로 동일하지만 훨씬 더 간결한 방식으로 :

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

즐겨 🙂


답변

Animation.setFillAfter를 사용하여이 작업을 수행 할 수도 있습니다.


답변

애니메이션 개체를 가져와 애니메이션 리스너를 추가하기 만하면됩니다. 다음은 예제 코드입니다.

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**


            }
        });


답변

Kotlin의 예

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
        }
    })


답변