@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.bottom:
showList(); //点击,弹出或者关闭view
break;
}
}
private void showList() {
if (playlistLayout == null) {
playlistLayout = new PlayListItemLayout(this, new AudioPopAdapter(this,list), listener,changePlayingPath);
}
viewContainer.removeAllViews(); //这是个容器布局
viewContainer.addView(playlistLayout); //添加道布局中
viewContainer.measure(0,0); //测量一下
int height = viewContainer.getMeasuredHeight();
if (!isOpen){
ViewGroup.LayoutParams layoutParams = viewContainer.getLayoutParams();
viewContainer.setLayoutParams(layoutParams);
layoutParams.height = height;
doAnimator(viewContainer,0,height);
isOpen = true;
}else{
ViewGroup.LayoutParams layoutParams = viewContainer.getLayoutParams();
viewContainer.setLayoutParams(layoutParams);
layoutParams.height = 0;
doAnimator(viewContainer,height,0);
isOpen = false;
}
}
/**这个就是折叠的动画 作用的view,高度从多少到多少*/
private void doAnimator(final View view , int start, int end) {
ValueAnimator animator = ValueAnimator.ofFloat(start, end);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = (float) animation.getAnimatedValue();
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height = (int) value;
viewContainer.setLayoutParams(layoutParams);
}
});
animator.setDuration(500); //执行的事件
animator.start();
}
文本折叠动画,其实很简单,就是测量高度而已
最新推荐文章于 2021-04-08 21:07:43 发布