android ObjectAnimator的复杂关系动画
- 关于复杂的属性关系来做动画就这么三种:
- 使用PropertyValuesHolder来对多个属性同时做动画
-
PropertyValuesHolder propertyValuesHolder = PropertyValuesHolder.ofFloat("alpha",0,1); PropertyValuesHolder propertyValuesHolder1 = PropertyValuesHolder.ofFloat("scaleX",0,1); PropertyValuesHolder propertyValuesHolder2 = PropertyValuesHolder.ofFloat("scaleY",0,1); ObjectAnimator.ofPropertyValuesHolder(view,propertyValuesHolder,propertyValuesHolder1,propertyValuesHolder2).start();
-
- 使用AnimatorSet来同时管理调配多个动画
-
ObjectAnimator animator1 = ObjectAnimator.ofFloat(view, "alpha", 0, 1); ObjectAnimator animator2 = ObjectAnimator.ofFloat(view, "translationX", -200, 200); ObjectAnimator animator3 = ObjectAnimator.ofFloat(view, "rotation", 0, 1080); animator3.setDuration(1000); AnimatorSet animatorSet = new AnimatorSet(); // 用 AnimatorSet 的方法来让三个动画协作执行 animatorSet.playSequentially(animator1,animator2); animatorSet.playTogether(animator2,animator3); // 要求 1: animator1 先执行,animator2 在 animator1 完成后立即开始 // 要求 2: animator2 和 animator3 同时开始 animatorSet.start();
-
- PropertyValuesHolder的进阶使用:使用PropertyValuesHolder.ofKeyframe()来把一个属性拆分成多段,执行更加精细的属性动画
-
// 使用 Keyframe.ofFloat() 来为 view 的 progress 属性创建关键帧 // 初始帧:progress 为 0 // 时间进行到一般:progress 为 100 // 结束帧:progress 回落到 80 // 使用 PropertyValuesHolder.ofKeyframe() 来把关键帧拼接成一个完整的属性动画方案 // 使用 ObjectAnimator.ofPropertyValuesHolder() 来创建动画 Keyframe keyframe = Keyframe.ofFloat(0,0); Keyframe keyframe1 = Keyframe.ofFloat(0.5f,100); Keyframe keyframe2 = Keyframe.ofFloat(1,80); PropertyValuesHolder holder = PropertyValuesHolder.ofKeyframe("progress",keyframe,keyframe1,keyframe2); // 然后,用 ObjectAnimator.ofPropertyValuesHolder() 把三个属性合并,创建 Animator 然后执行 ObjectAnimator.ofPropertyValuesHolder(view,holder).setDuration(3*1000).start();
-
- 使用PropertyValuesHolder来对多个属性同时做动画
Dana.Lee
To:Dana_Lee1016@126.com
浙公网安备 33010602011771号