欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android之ObjectAnimator使用记录

程序员文章站 2022-05-04 12:07:30
...

常用的方法:

注意:最后一个参数为可变参数,当只传一个值时,系统会自动调用第二个参数对应的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、透明度:
     alpha    0~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();
    }

}

 

三:初始化ObjectAnimator , 并启动动画。

 ObjectAnimator animator = ObjectAnimator.ofInt(view, "pointRadius", 100, 300, 100);
 animator.setDuration(2000);
 animator.start();

 四:我们通过  addListener  添加动画状态的监听。

animator.addListener(new AnimatorListenerAdapter() {

//包含相关的回掉方法
             
});

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