曲线运动动画(贝塞尔曲线)

贝塞尔曲线:维基百科中这样说到:在数学的数值分析领域中,贝塞尔曲线(英语:Bézier curve)是计算机图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau算法开发,以稳定数值的方法求出贝塞尔曲线。1、线性贝塞尔曲线给定点P0、P1,线性贝塞尔曲线只是一条两点之间的直线。这条线由下式给出:

 

二次方贝塞尔曲线二次方贝塞尔曲线的路径由给定点P0、P1、P2的函数B(t)追踪:

 

三次方贝塞尔曲线P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1或P2;这两个点只是在那里提供方向资讯。P0和P1之间的间距,决定了曲线在转而趋进P2之前,走向P1方向的“长度有多长”。曲线的参数形式为:

 

以上都是维基百科给出的定义,以及不同曲线的公式和效果图; 如果不清楚可以自己百度搜索或者维基百科搜索,么么哒!那么在上代码之前先看看我们最后实现出来的效果图:

下面来看看代码:
1.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"android:layout_width="match_parent" android:layout_height="match_parent"tools:context="th.zxq.com.quxianyundong.MainActivity"><th.zxq.com.quxianyundong.MyPathViewandroid:layout_width="match_parent"android:layout_height="match_parent" /><android.support.design.widget.FloatingActionButtonandroid:id="@+id/button"android:layout_width="40dp"android:layout_height="40dp" />
</RelativeLayout>

2.主activity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private FloatingActionButton button;private Path path;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (FloatingActionButton) findViewById(R.id.button);button.setOnClickListener(this);
    //绘制贝塞尔曲线path = new Path();path.moveTo(0,0);path.lineTo(300,300);path.quadTo(50,500,300,700);path.cubicTo(600,600,500,250,50,800);path.quadTo(500,0,0,0);}@Overridepublic void onClick(View v) {ObjectAnimator mAnimator = ObjectAnimator.ofFloat(v, View.X, View.Y, path);mAnimator.setDuration(5000);mAnimator.start();}
}

3. MyPathView类

public class MyPathView extends View {private final Paint paint;public MyPathView(Context context, AttributeSet attrs) {super(context, attrs);//初始化画笔paint = new Paint();//抗锯齿paint.setAntiAlias(true);//防抖动paint.setDither(true);//设置画笔未实心paint.setStyle(Paint.Style.STROKE);//设置颜色paint.setColor(Color.BLUE);//设置画笔宽度paint.setStrokeWidth(3);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Path path=new Path();path.moveTo(40,40);path.lineTo(340,340);path.quadTo(90,540,340,740);path.cubicTo(640,640,540,290,90,840);path.quadTo(540,40,40,40);canvas.drawPath(path,paint);}
}

Android开发 之 曲线运动动画(贝塞尔曲线)相关推荐

  1. Android Studio Canvas 实现鼠标贝塞尔曲线拖尾特效

    Android Studio Canvas 实现鼠标贝塞尔曲线拖尾特效 特效预览图 什么是贝塞尔曲线? 百度百科: ​ 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图 ...

  2. android动画背景,Android开发之背景动画简单实现方法

    在Android开发中,我们都会接到项目的业务需求,实现应用程序背景动画的效果,接下来,爱站技术频道小编带给大家的Android开发之背景动画简单实现方法. 1.先创建动画层,有三张图片 androi ...

  3. Android开发——SVGA格式动画内容资源替换

    Android开发--SVGA格式动画内容资源替换 随着接触的项目类型越来越多,目前格式个样的炫酷动画也随之而来,既然原生动画实现起来复杂,且有一个快捷灵活的动画为何不用呢,那让我们来好好学习一下如何 ...

  4. Android Studio Canvas 实现鼠标贝塞尔曲线拖尾特效(富文本编辑器)

    特效预览图 什么是贝塞尔曲线? 百度百科: 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线.一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段 ...

  5. android path基本使用以及贝塞尔曲线入门

    今天周一,产品要求版本迭代到1.5.3,发现需求没啥东西,后台暂时也给不了数据,于是又有时间写博客了,这是我很喜欢的模式,今天讲下path的基本使用以及贝塞尔曲线入门,后期会讲些贝塞尔曲线结合动画的效 ...

  6. java实现曲线运动_贝塞尔曲线 --匀速贝塞尔曲线运动的实现

    二次贝塞尔曲线通常以如下方式构建,给定二维平面上的固定点P0,P1,P2,用B(t)表示该条曲线 用一个动画来演示,可以更加清楚的表明这条曲线的构建过程 如果t变量本身线形变化的话,这条贝塞尔曲线本身 ...

  7. 属性动画+贝塞尔曲线实现落叶效果~~~(@_@;)

    之前看了一款有点黄的17app底角的爱心各种乱飞,好奇这种效果的实现方式,恰巧看到这篇文章:程序亦非猿:一步一步教你实现Periscope点赞效果,遂按照其思路实现了一个落叶飘零的效果,如下动图: 实 ...

  8. android 科技动画,android开发ViewFlipper触摸动画

    [IT168技术]介绍:在教程中,我们可以学习如何解决在Android项目的共同问题,有更多的关于Android的项目信息,我建议你下载ADT Android Pluglins和Eclipse. 背景 ...

  9. Android开发之三种动画

    转载:http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html http://www.lightskystreet.com/2 ...

最新文章

  1. exit的用法python_python 中exit,sys.exit,os._exit用法
  2. 【学习笔记】关于DOM4J:使用DOM4J解析XML文档
  3. myeclipse 修改模板
  4. Git 笔记:基本操作工作流程
  5. Java 多线程之 synchronized 和 volatile 的比较
  6. 博本 微型 电脑 linux,博本电脑下载与安装Windows7iso镜像系统教程
  7. MapReduce之RecordReader理解
  8. [debug] 开源项目的本地使用:使用pip安装的函数库不能被anaconda和pycharm使用+visdom使用 +路径问题
  9. NXLog采集windows日志配置conf文件
  10. 在禁用uac_如何(真正)在Windows 7上完全禁用UAC
  11. STM32F407VET6+cubemx+FSMC+ST7789
  12. 【不务正业】之前端HTML基础(二)
  13. DIV+CSS综合实例【传智PHP首页】
  14. python接入图灵机器人_python 连接图灵机器人
  15. PHP实现物流查询(通过快递网API实现)
  16. 计算机考研与就业的利弊分析,考研还是工作?两种选择的利弊分析,让你做出正确选择!...
  17. 解析国内冷链物流的发展现状
  18. 4 JWS 的签名方式
  19. 数据库-jdbc、spring-jdbc、spring-boot-starter-jdbc
  20. 《Web前端设计与开发》实验一:HTML基本标签实验2

热门文章

  1. 【车载IoT】国标《电动汽车远程服务与管理系统技术规范》:系统架构及协议概述
  2. Few-shot learning(少样本学习,入门篇)
  3. 如何提升居家幸福感?装吸顶音箱就成了
  4. #520. 「LibreOJ β Round #3」绯色 IOI(开端) 贪心
  5. matlab预测高铁客运量,公路客运量的回归分析和研究预测
  6. nodejs+vue宠物用品商城网站python php java
  7. 安卓图片裁剪之Android-Image-Cropper简单使用
  8. Elasticsearch7.7的安装与启动
  9. 2018年长沙理工大学第十三届程序设计竞赛
  10. 一文读懂SCADA、DCS与PLC之间的不同