旋转动画
1.用在让上下展开布局能够在展开合并的时候图标旋转180度,定义一个boolean值判断是需要旋转180度还是从180度回到0度。指定动画类型为相对自我的动画。
RotateAnimation rotate = new RotateAnimation(isShow ? 0 : 180, isShow ? 180 : 0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
2.设置动画持续时间
rotate.setDuration(200);
3.设置动画结束时继续执行
rotate.setFillAfter(true);
4.启动动画
arrowView.startAnimation(rotate);
约束动画
1.需要新建一个约束集ConstraintSet,获取要执行动画a的布局的父布局b,
克隆父布局b,clear清除a布局的约束,用connect 设置新的约束。设置动画方式,申请执行动画
isShow = !isShow;
ConstraintSet constraintSet = new ConstraintSet();
ConstraintLayout parentLayout = (ConstraintLayout) parentConstrainLayout.getParent();
constraintSet.clone(parentLayout);
constraintSet.clear(R.id.parent_constrain_layout, ConstraintSet.TOP);
constraintSet.connect(R.id.parent_constrain_layout, ConstraintSet.TOP, R.id.view4, ConstraintSet.BOTTOM, isShow ? 0 : 300);
AutoTransition transition = new AutoTransition();
transition.setDuration(200);
TransitionManager.beginDelayedTransition(parentLayout, transition);
constraintSet.applyTo(parentLayout);
注意beginDelayedTransition和 constraintSet.applyTo调用的都是父布局