Android开发Android开发经验谈Android开发

自定义view的path梳理

2018-07-19  本文已影响8人  ccccccal

基本方法

FILL_TYPE属性

toggleInverseFillType()切换相反的填充模式

添加基本图形

添加圆弧,

startAngle,确定角度起始位置
sweepAngle,确定扫过的角度
public void addArc(Rectf ovel ,float startAngle,float sweepAngle)

添加圆弧,与上面方法唯一不同的是:如果圆弧的起点和上次最后一个坐标点不相同,就连接两个点

public void arcTo (RectF oval, float startAngle, float sweepAngle)

添加圆弧,是否将之前路径的结束点设置为圆弧起点

true,在新的起点画圆弧,不连接最后一个点与圆弧起点,即与之前路径没有交集(同addArc())
false,在新的起点画圆弧,连接之前路径的结束点与圆弧起点,即与之前路径有交集,(同arcTo(三参数))

public void arcTi(RectF oval, float startAngle, float sweepAngle,boolean forcemoveTo)

添加圆形,添加之后下次路径起点变为圆在X轴正方向最大的点

起点 x轴正方向的0度
坐标点
半径
dir,指定绘制时是顺时针还是逆时针,CW为顺时针,CCW为逆时针

addCircle(float x ,float y, float radius ,Path.Direction dir)

添加椭圆形路径

oval,椭圆的外切矩形区域

addOval(Rectf oval,Path.Direction dir)

加入矩形路径

路径起点变为矩形的左上角起点

addRect(Rectf oval,Path.Direction dir)

加入圆角矩形路径

添加圆形路径后会改变路径的起点

addRoundRect(Rectf oval,float x,float y,Path.Direction dir)

添加新的path

将圆形路径移动到(dx,dy),再添加到新的path内部

 public void addPath(Path src, float dx, float dy)

将mPath进行Matrix变换再添加到当前path

public void addPath (Path mPath, Matrix matrix)

平移路径,与canvas的translate()类似

path.offset(float x , float y);

设置新的path路径

set(Path src)

有关布尔值操作

对 path1 和 path2 执行布尔运算,运算方式由第二个参数指定
运算结果存入到path1中。

boolean op (Path path, Path.Op op)
path1.op(path2, Path.Op.DIFFERENCE);


对 path1 和 path2 执行布尔运算,运算方式由第三个参数指定
运算结果存入到path3中。

boolean op (Path path1, Path path2, Path.Op op)
path3.op(path1, path2, Path.Op.DIFFERENCE)
参数 说明
DIFFERENCE path1不同于path2的区域
REVERSE_DIFFERENCE path2不同于path1的区域
INTERSECT path1和path2的交集
UNION path1和path2的并集
XOR 减去二者交集所剩下的

贝塞尔曲线,通过一个数据点以及多个控制点描述

path方法如下:

上一篇 下一篇

猜你喜欢

热点阅读