返回顶部
首页 > 资讯 > 精选 >怎么在Android应用中实现一个贝塞尔曲线
  • 243
分享到

怎么在Android应用中实现一个贝塞尔曲线

android贝塞尔曲线roi 2023-05-31 09:05:18 243人浏览 安东尼
摘要

这篇文章给大家介绍怎么在Android应用中实现一个贝塞尔曲线,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。贝塞尔曲线有一阶、二阶、三阶、N阶 一阶就是一条直线,有起点终点,没有控制点,对应方法就是canvas.dra

这篇文章给大家介绍怎么在Android应用中实现一个贝塞尔曲线,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

贝塞尔曲线有一阶、二阶、三阶、N阶

一阶就是一条直线,有起点终点,没有控制点,对应方法就是

canvas.drawLine(float startX, float startY, float stopX, float stopY, @NonNull Paint paint) ;

二阶为曲线,有起点终点,一个控制点,对应方法就是

path.quadTo(float x1, float y1, float x2, float y2);

其中x1、y1为控制点坐标, x2、y2为终点坐标,效果如下:

怎么在Android应用中实现一个贝塞尔曲线

三阶由俩个控制点控制,对应方法就是

path.cubicTo(float x1, float y1, float x2, float y2, float x3, float y3);

其中x1、y1、x2、y2为两个控制点坐标, x3、y3为终点坐标,效果如下:

怎么在Android应用中实现一个贝塞尔曲线

做一个demo巩固一下用法:

怎么在Android应用中实现一个贝塞尔曲线

新建一个SecondBezierView继承View,重写构造方法、初始化画笔、固定起点和终点的坐标,重写onTouchEvent()方法获取当前点击的点为控制点:

 @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_MOVE: mControlX = event.getX(); mControlY = event.getY(); invalidate(); break; } return true; }

在onDraw()方法中画点、画连接线、画文本、画二阶贝塞尔曲线

 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(mStartX, mStartY, 8, mLinePaint); canvas.drawText("起点", mStartX, mStartY, mLinePaint); canvas.drawCircle(mEndX, mEndY, 8, mLinePaint); canvas.drawText("终点", mEndX, mEndY, mLinePaint); canvas.drawCircle(mControlX, mControlY, 8, mLinePaint); canvas.drawText("控制点", mControlX, mControlY, mLinePaint); canvas.drawLine(mStartX, mStartY, mControlX, mControlY, mLinePaint); canvas.drawLine(mEndX, mEndY, mControlX, mControlY, mLinePaint); mBezierPath.reset();//因为不断重绘,path的路径也要重置,不然页面上会显示很多条线 mBezierPath.moveTo(mStartX, mStartY);//移至起点 mBezierPath.quadTo(mControlX, mControlY, mEndX, mEndY);//二阶贝塞尔曲线,传入控制点和终点坐标 canvas.drawPath(mBezierPath, mBezierPaint); }

最后添加一个回弹的动画,用的是OvershootInterpolator插值器,在onTouchEvent的MotionEvent.ACTION_UP中:

 case MotionEvent.ACTION_UP: ValueAnimator animX = ValueAnimator.ofFloat(mControlX, getWidth() / 2); animX.setDuration(500); animX.setInterpolator(new OvershootInterpolator()); animX.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mControlX = (float) animation.getAnimatedValue(); invalidate(); } }); animX.start(); ValueAnimator animY = ValueAnimator.ofFloat(mControlY, getHeight() / 2); animY.setDuration(500); animY.setInterpolator(new OvershootInterpolator()); animY.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mControlY = (float) animation.getAnimatedValue(); invalidate(); } }); animY.start(); break;

再来个三阶的

怎么在Android应用中实现一个贝塞尔曲线

主要就是用到了多点触控:

 private boolean mIsSecondPoint = false; @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) {//多点触控 case MotionEvent.ACTION_POINTER_DOWN: mIsSecondPoint = true; break; case MotionEvent.ACTION_POINTER_UP: mIsSecondPoint = false; break; case MotionEvent.ACTION_MOVE: mControlX1 = event.getX(0);//获取控制点1的横纵坐标 mControlY1 = event.getY(0); if (mIsSecondPoint) {  mControlX2 = event.getX(1);//获取控制点2的横纵坐标  mControlY2 = event.getY(1); } invalidate(); break; } return true; }

然后再onDraw()中画三阶贝塞尔曲线

 mBezierPath.reset(); mBezierPath.moveTo(mStartX, mStartY); mBezierPath.cubicTo(mControlX1, mControlY1, mControlX2, mControlY2, mEndX, mEndY); canvas.drawPath(mBezierPath, mBezierPaint);

关于怎么在Android应用中实现一个贝塞尔曲线就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 怎么在Android应用中实现一个贝塞尔曲线

本文链接: https://lsjlt.com/news/224661.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在Android应用中实现一个贝塞尔曲线
    这篇文章给大家介绍怎么在Android应用中实现一个贝塞尔曲线,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。贝塞尔曲线有一阶、二阶、三阶、N阶 一阶就是一条直线,有起点终点,没有控制点,对应方法就是canvas.dra...
    99+
    2023-05-31
    android 贝塞尔曲线 roi
  • android中贝塞尔曲线的应用示例
    前言: 贝塞尔曲线又称贝兹曲线,它的主要意义在于无论是直线或曲线都能在数学上予以描述。最初由保罗·德卡斯特里奥(Paul de Casteljau)于1959年运用德卡斯特里奥...
    99+
    2022-06-06
    示例 贝塞尔 贝塞尔曲线 Android
  • 怎么在Android应用中利用贝塞尔曲线实现一个购物车添加轨迹
    这期内容当中小编将会给大家带来有关怎么在Android应用中利用贝塞尔曲线实现一个购物车添加轨迹,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。效果如下:新建自定义View,重写构造方法,初始化Paint、...
    99+
    2023-05-31
    android 贝塞尔曲线 roi
  • 怎么用Android贝塞尔曲线绘制一个波浪球
    本篇内容介绍了“怎么用Android贝塞尔曲线绘制一个波浪球”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果如下所示:先来总结下 Wave...
    99+
    2023-06-30
  • Android 贝塞尔曲线绘制一个波浪球
    目录前言一、绘制 backgroundColor 文本二、构建 circlePath三、绘制波浪线四、取交集五、绘制 foregroundColor 文本六、添加动画七、使用前言 当...
    99+
    2024-04-02
  • 贝塞尔曲线、Path、PathMeasure理解在Android中
     1. 贝塞尔曲线在数学上的理解    3 点确定一断曲线,对于二阶贝塞尔曲线    在t 时间内,    从p0 到  q    从q  到 p1 上的点的连线,对应的切线,...
    99+
    2022-06-06
    path 贝塞尔 贝塞尔曲线 Android
  • Android怎么用Canvas绘制贝塞尔曲线
    这篇文章主要介绍了Android怎么用Canvas绘制贝塞尔曲线的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android怎么用Canvas绘制贝塞尔曲线文章都会有所收获,下面我们一起来看看吧。用Canvas...
    99+
    2023-07-02
  • 怎么在CSS中反转贝塞尔曲线
    今天就跟大家聊聊有关怎么在CSS中反转贝塞尔曲线,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设...
    99+
    2023-06-08
  • 怎么用android实现贝塞尔曲线之波浪效果
    这篇文章主要介绍“怎么用android实现贝塞尔曲线之波浪效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用android实现贝塞尔曲线之波浪效果”文章能帮助大家解决问题。1 前言贝塞尔曲线的...
    99+
    2023-07-02
  • android实现贝塞尔曲线之波浪效果
    本文实例为大家分享了android实现贝塞尔曲线之波浪效果的具体代码,供大家参考,具体内容如下 1 前言 为了给我以前的博客填坑,这章讲解贝塞尔曲线的几个常用的应用: 1.波浪效果2...
    99+
    2024-04-02
  • Android怎么自定义view贝塞尔曲线
    这篇文章主要介绍了Android怎么自定义view贝塞尔曲线的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android怎么自定义view贝塞尔曲线文章都会有所收获,下面我们一起来看看吧。贝塞尔曲线以一个简单的...
    99+
    2023-07-02
  • 《Android---贝塞尔曲线应用-QQ消息气泡效果(一)》
    前言 很久之前就看到过实现原理了,就是没有动手去实现一下。最近又看到了贝塞尔曲线相关的文章,于是决定着手写一个小demo。有什么不完善的地方,欢...
    99+
    2022-06-06
    贝塞尔 贝塞尔曲线 Android
  • Android怎么利用贝塞尔曲线绘制动画
    本篇内容主要讲解“Android怎么利用贝塞尔曲线绘制动画”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么利用贝塞尔曲线绘制动画”吧!彩虹系列通过动画控制绘制的结束点,就可以让贝...
    99+
    2023-06-30
  • AndroidFlutter利用贝塞尔曲线画一个小海豚
    目录前言效果图实现步骤总结前言 贝塞尔曲线的应用填补了计算机绘制与手绘之前的差距,更能表达人想画出的曲线,为了更好的理解万能的贝塞尔曲线,而海豚是我认为在海洋生物中身体曲线最完美的海...
    99+
    2024-04-02
  • Android通过交互实现贝塞尔曲线的绘制
    目录前言获取触控位置交互绘制实现绘制代码运行效果总结前言 之前几篇我们介绍了贝塞尔曲线的原理、绘制曲线和动效实现,这些都是代码预设好的,如果我们要根据需要自行绘制曲线,就需要使用交互...
    99+
    2024-04-02
  • Android怎么自定义View绘制贝塞尔曲线
    本文小编为大家详细介绍“Android怎么自定义View绘制贝塞尔曲线”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android怎么自定义View绘制贝塞尔曲线”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在...
    99+
    2023-07-02
  • android 通过贝塞尔曲线 实现爱心点赞功能
    android 通过贝塞尔曲线 实现爱心点赞功能:   ValueAnimatior: 核心功能:     已知起点p0, 终p3,中间点 p1、p2  通过贝塞尔曲线 计算路...
    99+
    2022-06-06
    爱心 贝塞尔 贝塞尔曲线 Android
  • Android Path绘制贝塞尔曲线实现QQ拖拽泡泡
    这两天学习了使用Path绘制贝塞尔曲线相关,然后自己动手做了一个类似QQ未读消息可拖拽的小气泡,效果图如下: 最终效果图 接下来一步一步的实现整个过程。 基本原理 其实就是使...
    99+
    2022-06-06
    path 贝塞尔 贝塞尔曲线 Android
  • Android自定义View绘制贝塞尔曲线实现流程
    目录前言二阶贝塞尔曲线三阶贝塞尔曲线前言 对于Android开发,实现贝塞尔曲线还是比较方便的,有对应的API供你调用。由于一阶贝塞尔曲线就是一条直线,实际没啥多大用处,因此,下面主...
    99+
    2022-11-13
    Android 贝塞尔曲线 Android 贝塞尔曲线实现方法
  • Android贝塞尔曲线实现加入购物车抛物线动画
    本文实例为大家分享了Android贝塞尔曲线实现加入购物车抛物线动画的具体代码,供大家参考,具体内容如下 先上图看效果 步骤: a.确定动画的起终点b.在起终点之间使用二次贝塞...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作