0

我有下一个代码:

public void desaparecer(final LinearLayout parent, View hijo, int espaciofinal) {

        parent.removeView(hijo); //remote the view of the parent

        final LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)parent.getChildAt(0).getLayoutParams(); //create the params

        final int espacioIni = parent.getChildAt(0).getHeight(); //i get the height from start

        ValueAnimator animator = ValueAnimator.ofInt(params.height, espaciofinal); //pass the params and the final height

        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {

                params.height = (Integer) valueAnimator.getAnimatedValue();
                parent.getChildAt(0).requestLayout(); //request
            }
        });
        animator.setDuration(300); //set the anim duration   

        animator.start(); //start the animation

    }

动画效果不好。这个想法是用初始高度开始动画。(这将是正确的方法)

但是,由于我不明白的原因,高度(开始动画时)传递为 0,我需要它不会破坏原始高度。

任何想法?我接受所有想法,除了 xml 来源。由于我的团队的原因,我无法使用它。

谢谢。

4

2 回答 2

0

对于布局更改的动画,您可以将 animateLayoutChanges="true" 设置为 ViewGroup 项目。并且任何更改都将使用默认动画进行动画处理。如果要更改动画行为,可以将 ViewGroup 设置为您的 oun LayoutTransition 对象。这里是谷歌会谈视频,可以帮助你,我希望)

于 2015-10-02T09:51:48.693 回答
0

解决了:

final int espacioIni = parent.getChildAt(2).getHeight();

    params.height = espacioIni;

    ValueAnimator animator = ValueAnimator.ofInt(params.height,espacio);

进入 ofInt 传递正确的参数并运行良好(startParameter,finishParameter)

于 2015-10-02T11:30:03.857 回答