//检查传入的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();
}
网友评论