實現點選view並隱藏與顯示指定view
阿新 • • 發佈:2019-02-17
private void togle() {
ll_des_container.measure(0, 0);
int start = ll_des_container.getMeasuredHeight(); //動畫的開始高度
int end = 0; //動畫的結束高度
if (mIsOpen) {//摺疊
/**對應佈局的高度發生了變化
從一個應有的高度到0的過程*/
// int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
// int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
// ll_des_container.measure(widthMeasureSpec, heightMeasureSpec);
ValueAnimator animator = ValueAnimator.ofInt(start, end);
animator.start();
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int animatedValue = (int) animation.getAnimatedValue();
//修改高度
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) ll_des_container.getLayoutParams();
params.height = animatedValue;
ll_des_container.setLayoutParams(params);
}
});
} else { //開啟
ValueAnimator animator = ValueAnimator.ofInt(end, start);
animator.start();
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int animatedValue = (int) animation.getAnimatedValue();
//修改高度
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) ll_des_container.getLayoutParams();
params.height = animatedValue;
ll_des_container.setLayoutParams(params);
}
});
}
mIsOpen = !mIsOpen;
}