在日常的开发中,我们很少会用到自定义箭头,但是有时候会有一些特殊要求会要求绘制箭头,所有特意记录一下

在绘制箭头的时候,一般分为直线箭头和曲线箭头,分别如下面图所示

一般来讲,曲线箭头会有三个坐标,开始坐标,中点坐标,终点坐标,而直线箭头分为两个坐标,开始坐标和结束坐标

直线箭头很简单,先绘制两个点的直线,再根据 atan2,sin,cos计算出角度,最终计算出终点和角度的终点值

曲线箭头则稍微有点不一样,先根据quadTo 赛贝尔画出曲线,再根据终点,和直线箭头一样,计算出角度,从而计算出箭头位置

//设置贝塞尔曲线的控制点坐标和终点坐标
path.quadTo(x1, y1,x2, y2
)

计算角度位置

//2.画出箭头
val r: Int = dip2px(context, 4f)
val angle =(atan2((y1 - y2).toDouble(), (x1 - x2).toDouble()) * 180 / Math.PI).toFloat()
val angle1 = ((angle + 45) * Math.PI / 180).toFloat()
val angle2 = ((angle - 45) * Math.PI / 180).toFloat()
val newX1 = (r * cos(angle1.toDouble())).toFloat()
val newY1 = (r * sin(angle1.toDouble())).toFloat()
val newX2 = (r * cos(angle2.toDouble())).toFloat()
val newY2 = (r * sin(angle2.toDouble())).toFloat()

关键代码就这些,如果有需要,可以根据代码地址去下载Demo

Android自定义直线箭头和曲线箭头-Android文档类资源-CSDN下载

Android 自定义曲线箭头和直线箭头相关推荐

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

    Android自定义曲线路径动画框架 最近在一个项目中需要一个像QQ打开个人爱好那样的动画效果如下图: 可以看出每个小球都是以顺时针旋转出来的,说明像这样的曲线动画用Android中自带的平移动画是很 ...

  2. R语言ggplot2可视化在图形中添加箭头:直线箭头、弧形箭头

    R语言ggplot2可视化在图形中添加箭头:直线箭头.弧形箭头 目录 R语言ggplot2可视化在图形中添加箭头:直线箭头.弧形箭头

  3. android自定义曲线控件,Android自定义view进阶-- 神奇的贝塞尔曲线

    上一篇介绍了自定义view需要知道的基本函数.新开一篇献给借给我vpn的深圳_奋斗小哥. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/ ...

  4. android自定义曲线控件,Android自定义折线图(可拖动显示)

    废话不多说先上图咯 图一 至于怎么做呢 咱们可以先获取下折线图数据分析一波 { "code": 200, "message": "", &q ...

  5. 【MFC】如何画带箭头的直线

    [MFC]如何画带箭头的直线 前言 代码 获得箭头坐标 前言 如何绘制带箭头的直线,说来也简单,只需要算出箭头左右两边的坐标,再使用LineTo()函数即可.话不多说上代码. 代码 获得箭头坐标 已知 ...

  6. Android自定义文件路径箭头,Android自定义ViewGroup实现带箭头的圆角矩形菜单

    本文和大家一起做一个带箭头的圆角矩形菜单,大概长下面这个样子: 要求顶上的箭头要对准菜单锚点,菜单项按压反色,菜单背景色和按压色可配置. 最简单的做法就是让UX给个三角形的图片往上一贴,但是转念一想这 ...

  7. Android Canvas绘制带箭头的直线

    先看下效果图: 下面我们直接看代码 我自定义了一个View,代码如下: package com.davis.drawtrangle;import android.content.Context; im ...

  8. android 带箭头的按钮,android自定义带箭头对话框

    本文实例为大家分享了android自定义带箭头对话框的具体代码,供大家参考,具体内容如下 import android.content.context; import android.content. ...

  9. canvas上,如何绘制带有箭头的直线?

    话不多说,直接上代码~~~ <canvas id="canvasId" width="400" height="400" style= ...

最新文章

  1. how tomcat works 总结 二
  2. svn中提示”Files 的值 .mine 无效” 的解决方案
  3. contos 安装vim自动补全插件 YCM YouCompleteMe
  4. SAP FI/CO模块调研问卷
  5. 成人高考计算机考试技巧,备战2015年成人高考:计算机基础考试经验分享
  6. 对照片进行边缘化处理,并将边缘化处理后的结果保存
  7. Linux 技巧: Bash 参数和参数扩展 (Shell)
  8. Itemplate 自定义控件
  9. 如何测试c程序的内存占用_如何写出高效的嵌入式C程序
  10. Node.js 8有哪些重要功能和修复? 1
  11. WPF 使用值转换器进行绑定数据的转换IValueConverter
  12. Compiz Check测试Linux桌面3D兼容性
  13. 高质量PWM数字功放芯片
  14. 陆琪:年薪十万凭什么不能开…
  15. 全国大学生英语竞赛总结
  16. 英语题目作业——OJ_2392:Clear Cold Water
  17. 一步一步实现微信抢红包
  18. c 语言让电脑自动关机,C语言编写简单的定时关机程序
  19. golang办公工作流workflow js-ojus/flow包介绍——系列一
  20. 双折射取向层对方位角锚定能的测量影响

热门文章

  1. Windows2012R2 远程桌面服务(RDP)3389存在SSL漏洞的解决办法
  2. ARM 汇编指令 ADR 与 LDR 使用
  3. Rancher 证书过期处理方案
  4. 数学建模森林着火问题Matlab,数学建模森林救火问题.doc
  5. saiku的简单配置及使用
  6. React does not recognize the `activeStyle` prop on a DOM element.
  7. 人民币汇率弹性渐强 汇改下一步完善市场机制
  8. Hive中行拆分操作
  9. STM324G模组实现OTA升级
  10. 驾驶课——侧方停车和过单边桥