Android自定义曲线路径动画框架

最近在一个项目中需要一个像QQ打开个人爱好那样的动画效果如下图:

可以看出每个小球都是以顺时针旋转出来的,说明像这样的曲线动画用Android中自带的平移动画是很难实现的。

曲线动画怎么画???

我们先来看看Android自带的绘制曲线的方式是怎样的:

android自定义View中path经常用到函数

1、moveTo

moveTo 不会进行绘制,只用于移动移动画笔,也就是确定绘制的起始坐标点。结合以下方法进行使用。

2、lineTo

lineTo 用于进行直线绘制

mPath.lineTo(300, 300);

canvas.drawPath(mPath, mPaint);

默认从坐标(0,0)开始绘制。如图:

把画笔移动(100,100)处开始绘制

mPath.moveTo(100, 100);

mPath.lineTo(300, 300);

canvas.drawPath(mPath, mPaint);

效果如图:

3、quadTo

quadTo() 用于绘制圆滑曲线,即贝塞尔曲线。

4、cubicTo

cubicTo() 同样是用来实现贝塞尔曲线的。mPath.cubicTo(x1, y1, x2, y2, x3, y3) (x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点。那么,cubicTo 和 quadTo 有什么不一样呢?说白了,就是多了一个控制点而已。然后,我们想绘制和上一个一样的曲线,应该怎么写呢?

mPath.moveTo(100, 500);

mPath.cubicTo(100, 500, 300, 100, 600, 500);

看看效果:

一模一样!如果我们不加 moveTo() 呢?

则以(0,0)为起点,(100,500)和(300,100)为控制点绘制贝塞尔曲线:

受到上面的启发,我们也可以用同样的方法来实现一个曲线动画框架

在写框架之前我们必须要先了解一样东西:

贝塞尔曲线:

维基百科中这样说到:

在数学的数值分析领域中,贝塞尔曲线(英语:Bézier curve)是计算机图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。 ###

贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau算法开发,以稳定数值的方法求出贝塞尔曲线。

1、线性贝塞尔曲线

给定点P0、P1,线性贝塞尔曲线只是一条两点之间的直线。这条线由下式给出:

2、二次方贝塞尔曲线

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

3、三次方贝塞尔曲线

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

曲线的参数形式为:

以上都是维基百科给出的定义,以及不同曲线的公式和效果图; 如果不清楚可以自己百度搜索或者维基百科搜索

那么在上代码之前先看看我们最后实现出来的效果图:

项目整体结构:

记录一下,方便以后使用,完事了额! 如果喜欢我的博客可以直接下面:

android动画框架,GitHub - azhengyongqin/CustomAnimationFramework: Android自定义曲线路径动画框架...相关推荐

  1. 【SwiftUI模块】0008、SwiftUI-自定义启动闪屏动画-App启动闪屏曲线路径动画

    SwiftUI小功能模块系列 0001.SwiftUI自定义Tabbar动画效果 0002.SwiftUI自定义3D动画导航抽屉效果 0003.SwiftUI搭建瀑布流-交错网格-效果 0004.Sw ...

  2. Android系统(221)---O版自定义开关机动画

    O版自定义开关机动画 O较前面的版本有更改,为方便自定义开关机动画我司,使用mtkbootanimation自定义开关机动画: [SOLUTION] O版会根据配置生成bootanimation或者m ...

  3. android 半浮层框架,GitHub - Jodragon/AnyLayer: Android稳定高效的浮层创建管理框架

    AnyLayer Android稳定高效的浮层创建管理框架. 可取代系统自带Dialog/Popup/BottomSheet等弹窗,可实现单Activity架构的Toast提示,可定制任意样式的Gui ...

  4. android+触摸绘图,GitHub - lslwsjly/touchvg: 支持多点触摸的矢量绘图框架(iOS、Android、Windows)...

    关于 TouchVG TouchVG 是一个主要由C++开发的轻量级2D矢量绘图框架,可在 iOS.Android.Windows 等多个平台构建矢量绘图应用. 作者:张云贵 rhcad@hotmai ...

  5. Android自定义控件开发入门与实战(6)路径动画,android脚本开发工具

    前面几章所讲的内容其实都只是比较普通.简单的动画,这章开始学习较难.较为有深度.也比较可以实现更加炫酷效果的动画,通过PathMeasure和SVG动画来实现. PathMeasure实现路径动画 P ...

  6. python制作酷炫动画_Python+Kepler.gl轻松制作酷炫路径动画

    1 简介 Kepler.gl相信很多人都听说过,作为Uber几年前开源的交互式地理信息可视化工具,kepler.gl依托WebGL强大的图形渲染能力,可以在浏览器端以多种形式轻松展示大规模数据集.图1 ...

  7. python制作的炫酷动画_Python+Kepler.gl轻松制作酷炫路径动画

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:费弗里 欢迎点击左上角关注小编,除了分享技术文章之外还有很多福利,私 ...

  8. android视频压缩框架,GitHub - tangpeng/VideoCompressor: Android 使用自带的MediaCodec 框架进行本地视频压缩,速度嗖嗖的,亲测有效!!!...

    如果您觉得本项目对你有用,请随手star,谢谢 Android 视频压缩常见3种方案:(1)FFmpeg,(2)mp4praser,(3)MediaCodec. 本demo是用android 自带的M ...

  9. android tv nugat,GitHub - GongXunYoung/Android-tv-widget: Android tv,盒子,投影仪 控件

    Android TV 开发框架 QQ群:522186932 Leanback 框架(类似谷歌的Leanback,更简直,更方便): 键盘框架: 菜单框架: 整体目录结构 *AndroidTvWidet ...

最新文章

  1. Session,ViewState用法
  2. python pil_使用Python的PIL模块来进行图片对比
  3. EMQ学习 ---集群
  4. Advanced Driver Assistance Systems (ADAS)
  5. 对python的认识作文500字_对阅读新认识作文500字
  6. Hyper-V 的导入和导出
  7. curl php 模拟来源_PHP-Curl模拟HTTPS请求
  8. Android实现侧滑抽屉菜单,android studio自带的抽屉侧滑菜单怎么设置点击事件?还头一回遇到,汗!...
  9. twisted系列教程十六–twisted守护进程
  10. NodeJs学习笔记001--npm换源
  11. php md5 验证,怎么核对md5?
  12. acer软件保护卡怎么解除_Acer软件保护卡下载
  13. qgis自定义符号库
  14. 推荐可永久保存文件的免费网络硬盘
  15. JAVA爬虫爬取国家统计局行政区划数据(2021年最新数据)
  16. 基于Matlab解决线性规划问题
  17. oracle isnull使用索引,isnull()用法总结
  18. 输入中文转换成拼音首字母
  19. windows10自带的画图软件橡皮擦调解大小
  20. 各品牌手机进rec快捷键

热门文章

  1. 诗与远方:无题(四十二)
  2. idea 批量导入包
  3. 关于LabVIEW视觉ROI的读取与存储
  4. 西北大学集训队选拔赛 F-三生三世(STL set和map的简单应用)
  5. .net core 后台 post设置等待时间_[vueelementadmin]前端发送的post请求的数据,后端接收不到并报EOFException异常的解决方案...
  6. MySQL日志审计 帮你揪出内个干坏事儿的小子
  7. 企业局域网内如何跨网安全传输数据
  8. PHP extension mcrypt must be loaded.
  9. Elixir:可能成为下一代Web开发语言
  10. 自回归模型/向量自回归模型