Android之ObjectAnimator使用记录

常用的方法:
注意:最后一个参数为可变参数,当只传一个值时,系统会自动调用第二个参数对应的get方法来获取初始值,若没有对应的get方法,则会使用对应变量的默认值没初始值。

public static ObjectAnimator ofFloat(Object target, String propertyName, float... values)
public static ObjectAnimator ofInt(Object target, String propertyName, int... values)
public static ObjectAnimator ofObject(Object target, String propertyName,TypeEvaluator evaluator, Object... values)

常用参数: 1、透明度: alpha0~1之间的值2、旋转度数: rotation:绕Z轴旋转 rotationX: 绕X轴旋转 rotationY: 绕Y轴旋转3、平移: translationX: X轴平移 translationY: Y轴平移4、缩放: scaleX: 缩放X轴 scaleY: 缩放Y轴

自定义一个ObjectAnimator的属性:
一:我们需要定义一个对象,如下Point,包含属性 :半径radius 。
public class Point { private int radius; public Point(int radius){ this.radius= radius; }public int getRadius() { return radius; }public void setRadius(int radius) { this.radius= radius; } }

二:自定义View初始化我们的Point类,在onDraw中根据我们的Point的半径来画圆;然后定义一个函数 setPointRadius,该方法的 ‘pointRadius’ 就是我们ObjectAnimator 的属性。
public class CircleView extends View {private Point point = new Point(100); private Paint paint = new Paint(); private int centerX = 100; private int centerY = 100; public CircleView(Context context, AttributeSet attrs) { super(context, attrs); }@Override protected void onDraw(Canvas canvas) { if (mPoint != null){ paint.setAntiAlias(true); paint.setColor(Color.RED); paint.setStyle(Paint.Style.FILL); canvas.drawCircle(centerX, centerY, point.getRadius(), paint); } super.onDraw(canvas); }/** 第一点,这个set函数所相应的属性应该是pointRadius或者PointRadius。前面我们已经讲了第一 个字母大写和小写无所谓,后面的字母必须保持与set函数全然一致。 第二点,在setPointRadius中,先将当前动画传过来的值保存到point中。做为当前圆形的半径。 第三点,invalidate(),强制界面刷新,在界面刷新后。就開始运行onDraw()函数。 */ void setPointRadius(int radius){ point.setRadius(radius); invalidate(); }}


【Android之ObjectAnimator使用记录】三:初始化ObjectAnimator , 并启动动画。
ObjectAnimator animator = ObjectAnimator.ofInt(view, "pointRadius", 100, 300, 100); animator.setDuration(2000); animator.start();

四:我们通过addListener添加动画状态的监听。
animator.addListener(new AnimatorListenerAdapter() {//包含相关的回掉方法});

以上为ObjectAnimator 动画的基本使用方法。

    推荐阅读