我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android怎么利用贝塞尔曲线绘制动画

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android怎么利用贝塞尔曲线绘制动画

本篇内容主要讲解“Android怎么利用贝塞尔曲线绘制动画”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么利用贝塞尔曲线绘制动画”吧!

彩虹系列

通过动画控制绘制的结束点,就可以让贝塞尔曲线动起来。例如下面的动图展示的效果,看起来像搭了一个滑滑梯一样。实际上就是用7条贝塞尔曲线实现的,我们使用了 Animation 对象的值来控制绘制的结束点,从而实现了对应的动画效果。

Android怎么利用贝塞尔曲线绘制动画

具体源码如下,其中控制绘制结束点就是在动画过程中修改循环的次数,即t <= (100 * animationValue).toInt();这句代码,其中 animationValue 是动画控制器当前值,范围时从0-1。

class AnimationBezierPainter extends CustomPainter {  AnimationBezierPainter({required this.animationValue});  final double animationValue;  @override  void paint(Canvas canvas, Size size) {    final lineWidth = 6.0;    paint.strokeWidth = lineWidth;    paint.style = PaintingStyle.stroke;    final colors = [      Color(0xFFE05100),      Color(0xFFF0A060),      Color(0xFFE0E000),      Color(0xFF10F020),      Color(0xFF2080F5),      Color(0xFF104FF0),      Color(0xFFA040E5),    ];    final lineNumber = 7;    for (var i = 0; i < lineNumber; ++i) {      paint.color = colors[i % colors.length];      _drawAnimatedLines(canvas, paint, size, size.height / 4 + i * lineWidth);    }  }  @override  bool shouldRepaint(covariant CustomPainter oldDelegate) {    return true;  }  _drawRainbowLines(Canvas canvas, Paint paint, Size size, yPos) {    var yGap = 60.0;    var p0 = Offset(0, yPos - yGap / 2);    var p1 = Offset(size.width * 2 / 3, yPos - yGap);    var p2 = Offset(size.width / 3, yPos + yGap);    var p3 = Offset(size.width, yPos + yGap * 1.5);    var path = Path();    path.moveTo(p0.dx, p0.dy);    for (var t = 1; t <= (100 * animationValue).toInt(); t += 1) {      var curvePoint =          BezierUtil.get3OrderBezierPoint(p0, p1, p2, p3, t / 100.0);      path.lineTo(curvePoint.dx, curvePoint.dy);    }    canvas.drawPath(path, paint);  }}

我们修改曲线的控制点还可以实现下面的效果,大家有兴趣可以自己尝试一下。

Android怎么利用贝塞尔曲线绘制动画

Android怎么利用贝塞尔曲线绘制动画

弹簧动画

用多个贝塞尔曲线首尾相接,在垂直方向叠起来就能画出一条弹簧了,然后我们更改弹簧的间距和高度(曲线的数量)就能做出弹簧压下去和弹起来的动画效果了。

Android怎么利用贝塞尔曲线绘制动画

这部分的代码如下所示:

@overridevoid paint(Canvas canvas, Size size) {  var paint = Paint()..color = Colors.black54;  final lineWidth = 2.0;  paint.strokeWidth = lineWidth;  paint.style = PaintingStyle.stroke;  final lineNumber = 20;  // 弹簧效果  final yGap = 2.0 + 16.0 * animationValue;  for (var i = 0; i < (lineNumber * animationValue).toInt(); ++i) {    _drawSpiralLines(        canvas, paint, size, size.width / 2, size.height - i * yGap, yGap);  }}_drawSpiralLines(Canvas canvas, Paint paint, Size size, double xPos,    double yPos, double yGap) {  final xWidth = 160.0;  var p0 = Offset(xPos, yPos);  var p1 = Offset(xPos + xWidth / 2 + xWidth / 4, yPos - yGap);  var p2 = Offset(xPos + xWidth / 2 - xWidth / 4, yPos - 3 * yGap);  var p3 = Offset(xPos, yPos - yGap);  var path = Path();  path.moveTo(p0.dx, p0.dy);  for (var t = 1; t <= 100; t += 1) {    var curvePoint =        BezierUtil.get3OrderBezierPoint(p0, p1, p2, p3, t / 100.0);    path.lineTo(curvePoint.dx, curvePoint.dy);  }  canvas.drawPath(path, paint);}

到此,相信大家对“Android怎么利用贝塞尔曲线绘制动画”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android怎么利用贝塞尔曲线绘制动画

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android怎么利用贝塞尔曲线绘制动画

本篇内容主要讲解“Android怎么利用贝塞尔曲线绘制动画”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么利用贝塞尔曲线绘制动画”吧!彩虹系列通过动画控制绘制的结束点,就可以让贝
2023-06-30

Android怎么用Canvas绘制贝塞尔曲线

这篇文章主要介绍了Android怎么用Canvas绘制贝塞尔曲线的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android怎么用Canvas绘制贝塞尔曲线文章都会有所收获,下面我们一起来看看吧。用Canvas
2023-07-02

Android怎么自定义View绘制贝塞尔曲线

本文小编为大家详细介绍“Android怎么自定义View绘制贝塞尔曲线”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android怎么自定义View绘制贝塞尔曲线”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在
2023-07-02

怎么用Android贝塞尔曲线绘制一个波浪球

本篇内容介绍了“怎么用Android贝塞尔曲线绘制一个波浪球”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果如下所示:先来总结下 Wave
2023-06-30

Android动效Compose贝塞尔曲线动画规格详解

这篇文章主要为大家介绍了Android动效Compose贝塞尔曲线动画规格详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

Android如何使用贝塞尔曲线画心形

这篇“Android如何使用贝塞尔曲线画心形”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android如何使用贝塞尔曲线画
2023-07-02

Android自定义View绘制贝塞尔曲线实现流程

贝塞尔曲线的本质是通过数学计算的公式来绘制平滑的曲线,分为一阶,二阶,三阶及多阶。但是这里不讲数学公式和验证,那些伟大的数学家已经证明过了,所以就只讲讲Android开发中的运用吧
2022-11-13

Android Path绘制贝塞尔曲线实现QQ拖拽泡泡

这两天学习了使用Path绘制贝塞尔曲线相关,然后自己动手做了一个类似QQ未读消息可拖拽的小气泡,效果图如下:最终效果图 接下来一步一步的实现整个过程。 基本原理 其实就是使用Path绘制三点的二次方贝塞尔曲线来完成那个妖娆的曲线的。然后根据
2022-06-06

Android中贝塞尔曲线的绘制方法示例代码

贝塞尔曲线,很多人可能不太了解,什么叫做贝塞尔曲线呢?这里先做一下简单介绍:贝塞尔曲线也可以叫做贝济埃曲线或者贝兹曲线,它由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋。一般的矢量图形软件常利用贝塞尔曲线来精确画出曲
2022-06-06

使用Canvas怎么绘制一个贝赛尔曲线轨迹动画

本篇文章为大家展示了使用Canvas怎么绘制一个贝赛尔曲线轨迹动画,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。二次贝赛尔曲线/** * 二次贝塞尔曲线动画 * @param {Array
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录