结束动画事件android

时间:2011-09-30 06:04:07

标签: android android-fragments android-animation

我在视图中有一个淡出动画(在片段内),每次动画发生时,视图结束后再次重绘自己。我找到了一项关于做view.SetVisibility(View.GONE)的工作。但它并不等待动画完成。我想在动画完成后才执行此setVisibility代码。最好的方法是什么?

5 个答案:

答案 0 :(得分:161)

您可以将动画侦听器添加到动画对象中,如

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

答案 1 :(得分:23)

功能与接受的答案相同,但更简洁:

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

享受:)

答案 2 :(得分:8)

您也可以使用Animation.setFillAfter

来实现这一目标

答案 3 :(得分:8)

只需拍摄动画对象并添加动画侦听器即可。 以下是示例代码:

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


            }
        });

答案 4 :(得分:1)

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