本文主要是学习笔记,学习建议直接去看HenCoder视频教学。
作业原地址:课程作业地址。
交作业地址:交作业。
两部分PropertyAnimator和ObjectAnimator。
PropertyAnimator:
效果不贴了,很简单,简单记录下
位移动画:
imageView.animate().translationX(100);
imageView.animate().translationY(100);
imageView.animate().translationZ(100);
旋转动画:
imageView.animate().rotation(180);
imageView.animate().rotationX(180);
imageView.animate().rotationY(180);
缩放动画:
imageView.animate().scaleX(1.5f);
imageView.animate().scaleY(1.5f);
透明度动画:
imageView.animate().alpha(0.0f);
组合动画:
imageView.animate()
.scaleX(1.0f)
.scaleY(1.0f)
.alpha(1.0f)
.translationX(100f)
.rotation(360);
setDuration:没什么说的,单位是毫秒
setInterpolator:差值器,根据自己需要选择系统提供的,也可以自定义差值器。
PropertyAnimator只能使用系统的属性,如果要为自定义属性添加动画,就需要用到:
ObjectAnimator:
ObjectAnimator也可以实现上面的动画效果,比如X方向位移动画:
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageView, "TranslationX", 0, 200);
objectAnimator.start();
ObjectAnimator使用说明:
- ObjectAnimator.ofFloat或ObjectAnimator.ofInt根据设置数据类型去选择
- 第一个参数是要设置动画的对象
- 第二个是要修改的属性,系统会拼接上”set”去该对象中寻找方法。比如上面X方向位移,系统会去找setTranslationX()方法,属性是不是叫TranslationX不重要,但是方法一定要叫setTranslationX()。所以如果自定义属性动画,一定要实现该属性的setter方法(setter中记得调用invalidate()重绘)。
- 后面的是变长度参数,如果只设置一个就是属性变化的目标值,两个的话就是初始值和目标值,大于两个中间的都是中间值。因为可以不设置初始值,所以也必须要实现该属性的getter方法。
- ObjectAnimator 的组合动画需要用到AnimatorSet类,animatorSet.playTogether()的参数中填入需要组合的ObjectAnimator实例就行,animatorSet也可以设置时长和差值器,记得调用animatorSet.start()。
哦了,感谢HenCoder