item 张开收回动画实现

//检查传入的widthMeasureSpec和heightMeasureSpec是否与当前的值是一样的,不一样的话,调用onMeasure函数,并设置mPrivateFlags。

view.measure(0,0);


int menuLayoutHeight =tvTop.getMeasuredHeight();.

//展开

public void show(final View v ,int height){

        v.setVisibility(View.VISIBLE);

        ValueAnimator animator = ValueAnimator.ofInt(0,height);

        animator.setDuration(500);

        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

            @Override

            public void onAnimationUpdate(ValueAnimator animation) {

                int value = (Integer) animation.getAnimatedValue();

                v.getLayoutParams().height = value;

                v.setLayoutParams(v.getLayoutParams());

            }

        });

        animator.start();

    }

//收回

public void dismiss(final View v ,int height){

        ValueAnimator animator = ValueAnimator.ofInt(height,0);

        animator.setDuration(500);

        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

            @Override

            public void onAnimationUpdate(ValueAnimator animation) {

                int value = (Integer) animation.getAnimatedValue();

                if (value == 0) {

                    v.setVisibility(View.GONE);

                }

                v.getLayoutParams().height = value;

                v.setLayoutParams(v.getLayoutParams());

            }

        });

        animator.start();

    }

你可能感兴趣的:(item 张开收回动画实现)