安卓开发之实现控件的贝塞尔曲线路径动画

本文介绍了如何在安卓开发中利用ObjectAnimator和估值器ViewPathEvaluator实现贝塞尔曲线路径动画。通过定义自定义属性、保存路径信息、创建估值器,将贝塞尔曲线作为控件移动的路径,详细讲解了动画原理和实现步骤。
摘要由CSDN通过智能技术生成

贝塞尔曲线一般用在绘制canvas图层上,这里主要通过ObjectAnimation动画及估值器实现将贝塞尔曲线作为控件移动的动画路径。

项目demo图:

这里写图片描述

一、ObjectAnimator动画原理

  1. ObjectAnimator.ofObject(….,”xxx”,估值值,区间数组); 【定义动画属性xxx和区间】

  2. 插值器/加速器(Interpolator)【返回当前数字进度t】

  3. 估值值(Evaluator)【根当前数字进度计算并返回当前值】

  4. 调用setXxx函数 【根据封装好的setXxx函数并反射调用,将第三步返回当前值以参数传入】

二、自定义ObjectAnimator属性

上面我们理解了ObjectAnimator的动画实现原理,下面我们来自定义一个属性动画来看看实现贝塞尔路径效果吧。

一、保存贝塞尔路径的信息——ViewPoint

为了保存贝塞尔路径的一些关键点信息,我们定义一个类来保存:

public class ViewPoint{

    float x ,y;

    float x1,y1;

    float x2,y2;

    int operation;

    public ViewPoint(float x, float y) {
        this.x = x;
        this.y = y;
    }

    // 设置起点
    public static ViewPoint moveTo(float x, float y, int operation){
        return new ViewPoint(x,y,operation);
    }

    // 直线移动
    public static ViewPoint lineTo(float x, float y, int operation){
        return new ViewPoint(x,y,operation);
    }

    // 三阶贝塞尔曲线移动
    public static ViewPoint curveTo(float x, float y,float x1,float y1,float x2,float y2, int operation){
        return new ViewPoint(x,y,x1,y1,x2,y2,operation);
    }

    // 二阶贝塞尔曲线移动
    public static ViewPoint quadTo(float x, float y,float x1,float y1, int operation){
        return new ViewPoint(x,y,x1,y1,operation);
    }



    p
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值