属性动画
一. ValueAnimator
这个Animation是针对值的!ValueAnimator不会对控件做任何操作,我们可以给它设定从哪个值运动到哪个值,通过监听这些值的渐变过程来自己操作控件
1. 创建实例
调用ValueAnimation类中的ofInt(int...values)、ofFloat(String propertyName,float...values)等静态方法实例化ValueAnimator对象,并设置目标属性的属性名、初始值或结束值等值;
2. 设置数值变化监听器
调用addUpdateListener(AnimatorUpdateListener mListener)方法为ValueAnimator对象设置属性变化的监听器;
3. 创建自定义的Interpolator(可选)
调用setInterpolator(TimeInterpolator value)为ValueAniamtor设置自定义的Interpolator;(可选,不设置默认为缺省值)
4. 创建自定义的TypeEvaluator(可选)
调用setEvaluator(TypeEvaluator value)为ValueAnimator设置自定义的TypeEvaluator数值发生器;(可选,不设置默认为缺省值)。
初始化时指定:ValueAnimator valueanim1 = ValueAnimator.ofObject(newTypeEvaluator<PointF>() {…}并覆写evaluate方法。
5. 添加属性值变化监听器
在AnimatorUpdateListener 中的实现方法为目标对象的属性设置计算好的属性值。
6. 设置动画的持续时间
7. 是否重复及重复次数等属性
8. 为ValueAnimator设置目标对象并开始执行动画。
二. ObjectAnimator
该类作为ValueAnimator的子类不仅继承了ValueAnimator的所有方法和特性,并且还封装很多实用的方法,方便开发人员快速实现动画。同时,由于属性值会自动更新,使用ObjectAnimator实现动画不需要像ValueAnimator那样必须实现 ValueAnimator.AnimatorUpdateListener ,因此实现任意对象的动画显示就更加容易了。我们在大部分的开发工作中,都会使用ObjectAnimator而非ValueAnimator实现我们所需的动画效果。
View Animation实现View对象动画的特点,即View Animation本身是通过改变View的绘制方式来实现动画的,View对象本身的属性值并没有改变,对象仍然停留在原始位置。那Android为了消除这一弊病,在Android 3.0 中给 View 增加了一些新的属性以及相应的 getter、setter 方法。Property Animation系统可以通过修改 View 对象实际的属性值来实现屏幕上的动画效果。此外,当属性值发生变化时,Views 也会自动调用 invalidate() 方法来刷新屏幕。
常用动画的属性:
1. translationX 和translationY
这两个属性控制着 View 的屏幕位置坐标变化量,以layout 容器的左上角为坐标原点;
2. rotation、rotationX 和 rotationY
这三个属性控制着2D旋转角度(rotation属性)和围绕某枢轴点的 3D 旋转角度;
3. scaleX、scaleY
这两个属性控制着View 围绕某枢轴点的 2D 缩放比例;
4. pivotX 和 pivotY
这两个属性控制着枢轴点的位置,前述的旋转和缩放都是以此点为中心展开的,缺省的枢轴点是 View 对象的中心点;
5. x 和 y
这是指 View 在容器内的最终位置,等于View左上角相对于容器的坐标加上 translationX 和 translationY 后的值;
6. alpha
表示 View 的 alpha 透明度。缺省值为 1 (不透明),为 0 则表示完全透明(看不见);
三. AnimatorUpdateListener
addUpdateListener(AnimatorUpdateListenermListener)方法为ValueAnimator对象设置属性变化的监听器,可以在计算他们值的时候修改他们。
你可以在ValueAnimator中通过定