Android 自定义曲线箭头和直线箭头

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

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

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

直线箭头很简单,先绘制两个点的直线,再根据 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下载

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nibinusm22b

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值