隐藏布局非(visibility进行控制)

来源:互联网 发布:河南评书下载软件 编辑:程序博客网 时间:2024/06/05 18:01

需求就是点击CheckBox把那个帧布局隐藏
这里写图片描述
使用了

layout.setVisibility(View.VISIBLE);layotl.setVisibility(View.GONE);

然并卵…点击一点变化也没有 所以采用新的方法!!!


要隐藏的布局

layout = (FrameLayout) findViewById(R.id.id_layout);

测量完整展示的高度

    private int getLongHeight() {        layout.measure(0, 0);        return layout.getMeasuredHeight();    }

不展示的高度 (都是0)

 layoutParams = layout.getLayoutParams();        layoutParams.height = 0;        layout.setLayoutParams(layoutParams);

需要一个点击开始拓展动画 (public boole isOpen = flase)

  private void expend() {    ValueAnimator valueAnimator = null;        if (!isOpen) {            //点击后扩展            isOpen = true;            valueAnimator = ValueAnimator.ofInt(0, getLongHeight());            } else {            isOpen = false;            valueAnimator = ValueAnimator.ofInt(getLongHeight(), 0);                    }        if (valueAnimator != null) {            valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {                @Override                public void onAnimationUpdate(ValueAnimator valueAnimator) {                int height = (Integer) valueAnimator.getAnimatedValue();                layoutParams.height = height;                layout.setLayoutParams(layoutParams);                            }                            });                        }                valueAnimator.setDuration(500);                valueAnimator.start();                }

这样就OK了 ,点击可以隐藏布局!
需要注意的是 valueAnimator.addUpdateListener

1 0