常用的方法:
注意:最后一个参数为可变参数,当只传一个值时,系统会自动调用第二个参数对应的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 动画的基本使用方法。