将视图的可见性更改为动画

时间:2014-08-12 10:20:58

标签: android android-ui

enter image description here

我在线性布局中有3个文本视图。按下按钮我必须隐藏其中的两个,如上图所示。现在它突然闪烁,看起来并不好看。我希望有一个“崩溃”效果,以便它慢慢上升,就像它被收缩一样。 有关如何做到这一点的任何线索?

我在XML和Tranlate动画中尝试'animateLayoutChanges',但没有一个是流畅的体验。

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

您可以通过添加此参数来为线性布局设置动画:

android:animateLayoutChanges="true"

这仅适用于API 11 / Android 3.0。 据我所知,这是动态变化可见性的唯一简单方法。如果你想要更多自定义的东西,我不认为有更短的方法。

答案 1 :(得分:0)

对于“折叠”动画,您可以在单击文本视图时执行以下动画

TranslateAnimation collapseAnim = new TranslateAnimation(0.0f, 0.0f, 0.0f, -view.getHeight());
        collapseAnim.setAnimationListener(new AnimationListener() {
            //.....

            @Override
            public void onAnimationEnd(Animation animation) {
                view.setVisibility(View.GONE);
            }
        });

        collapseAnim.setDuration(300);
        collapseAnim.setInterpolator(new AccelerateInterpolator(0.5f));
        //Starts Animation
        view.startAnimation(collapseAnim);

答案 2 :(得分:0)

使用此

final ViewGroup.LayoutParams lp = dismissView.getLayoutParams();
    final int originalHeight = dismissView.getHeight();

    ValueAnimator animator = ValueAnimator.ofInt(originalHeight, 1).setDuration(mAnimationTime);

    animator.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            //gone dismissView
        }
    });

    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            lp.height = (Integer) valueAnimator.getAnimatedValue();
            dismissView.setLayoutParams(lp);
        }
    });

    animator.start();