环形菜单效果,按钮是发散成圆排布
float y = (float) (r * Math.sin((Math.PI / 2) / (res.length - 2) * (i - 1)));
float x = (float) (r * Math.cos((Math.PI / 2) / (res.length - 2) * (i - 1)));
ObjectAnimator animator = ObjectAnimator.ofFloat(viewList.get(i), "translationY",
0f, -y);
ObjectAnimator animator2 = ObjectAnimator.ofFloat(viewList.get(i), "translationX",
0f, x);
x,y是通过数学知识计算出来的,改变x,y 的正负值,菜单弹出的方向也可以改变,其他的代码和老师的相同。
动画是速度interpolator,他可以定义动画的速度变化,从而实现更加复杂的动画效果。设置interpolator的方法:
ObjectAnimator的setInterpolator()方法,参数可以传递各种各样的interpolator,比如:
objectAnimator.setInterpolator(new BounceInterpolator());
animator.addListener(new AnimatorListenerAdapter);
animator.setStartDelay(x);
setInterpolator(new XXX);
AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
--
--
--
--
--
--