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();

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容