Android-高级-UI-进阶之路--(六)-PathMeasure-制作路径动画

  1. moveTo,lineTo,setLastPoint,close

//从0.0 连接 400,600
mPath.lineTo(400f,600f)
//重置上一点相当于 0,0 到 600,200, 设置之前操作的最后一个点位置(会影响之前跟之后的起始点)
//mPath.setLastPoint(600f,200f)
//从 400,600 连接 900,100
mPath.lineTo(900f,100f)
//开始绘制
anvas!!.drawPath(mPath,mPathPaint)

我们把上面注释放开,如下代码:

//从0.0 连接 400,600
mPath.lineTo(400f,600f)
//重置上一点相当于 0,0 到 600,200, 设置之前操作的最后一个点位置(会影响之前跟之后的起始点)
mPath.setLastPoint(600f,200f)
//从 600,200 连接 900,100
mPath.lineTo(900f,100f)
//开始绘制
anvas!!.drawPath(mPath,mPathPaint)

实现效果如下:

通过上图我们发现 setLastPoint 设置了之后改变了之前的最后一次的坐标点,可以理解为更新最后一点的坐标,我们发现每次都是从坐标角 (0,0) 开始绘制,那么有没有一个方法指定从哪个起点开始绘制,正好,你可以试试 moveTo 它可以指定 path 的起点,如下代码:

//moveTo 设置起点
mPath.moveTo(600f,200f)
//从0.0 连接 400,600
mPath.lineTo(400f,600f)
mPath.lineTo(800f,300f)
//最后一点和起点封闭
mPath.close()

通过上图我们先利用 Path#moveTo 将 Path 起点设置为 (400,600) 开始绘制,最后调用了 Path#close 将为闭合的连接线闭合。

  1. addXxx 系列

我们就

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

浏览器打开:qq.cn.hn/FTe 免费领取

以 矩形,圆角矩形,椭圆,圆,圆弧 的顺序绘制

//Path.Direction.CW/CCW 顺时针/逆时针

//1. 添加矩形到 Path
void addRect (float left, float top, float right, float bottom, Path.Direction dir)
//2. 添加 圆角矩形到 Path
void addRoundRect (RectF rect, float[] radii, Path.Direction dir)
void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)
//3. 添加 椭圆 到 Path
void addOval (RectF oval, Path.Direction dir)
//4. 添加 圆 到 Path
void addCircle (float x, float y, float radius, Path.Direction dir)
//5. 添加 圆弧 到 Path ,直接添加一个圆弧到path中
void addArc (RectF oval, float startAngle, float sweepAngle)
//添加一个圆弧到 path,如果圆弧的起点和上次最后一个坐标点不相同,就连接两个点
void arcTo (RectF oval, float startAngle, float sweepAngle)
void arcTo (RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo)

mPathPaint.textSize = 50f
//1. 添加矩形到 Path
mPath.addRect(100f,300f,400f,700f,Path.Direction.CW)//顺时针
canvas!!.drawText(“1”,200f,500f,mPathPaint)

//2. 添加 圆角矩形到 Path
mPath.addRoundRect(100f + 500,300f,1000f ,700f,30f,30f,Path.Direction.CCW)//逆时针
canvas!!.drawText(“2”,800f,500f,mPathPaint)

//3. 添加 椭圆 到 Path
mPath.addOval(100f,1300f,600f ,1000f,Path.Direction.CCW)//逆时针
canvas!!.drawText(“3”,300f,1150f,mPathPaint)

//4. 添加 圆 到 Path
mPath.addCircle(850f,1200f ,150f,Path.Direction.CCW)//逆时针
canvas!!.drawText(“4”,850f,120

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值