public class PathView extends View {
private Paint mPaint;
private Path mPath;
public PathView(Context context) {
this(context, null);
}
public PathView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public PathView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initPaint();
}
private void initPaint() {
//初使化paint
mPaint = new Paint();
mPaint.setAntiAlias(true); //设置抗锯齿
mPaint.setColor(Color.RED); //设置画笔的颜色
mPaint.setStyle(Paint.Style.STROKE); //设置画笔的样式
mPaint.setStrokeWidth(4); //边框的size
mPath = new Path();
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onDraw(Canvas canvas) {
// super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
mPath.moveTo(300, 200);
mPath.lineTo(100, 600);
mPath.lineTo(500, 600);
mPath.close();
canvas.drawPath(mPath, mPaint);
int layer = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG); //新建一个图层
canvas.drawColor(Color.argb(125,255,0,0));
mPaint.setColor(Color.BLUE);
Path newPath = new Path();
newPath.moveTo(100,100);
newPath.lineTo(100,300);
newPath.lineTo(300,200);
newPath.close();
canvas.drawPath(newPath, mPaint);
canvas.restoreToCount(layer);
}
}
![](https://img.haomeiwen.com/i6461854/bd8f91cc085d2577.png)
在我们drawPath的时候如果设置 paint的颜色 我们要重新 new 一个path
Path newPath = new Path();
至于是否新建图层则无所谓 看自己项目的需求了
int layer = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG); //新建一个图层
三级贝塞尔曲线
![](https://img.haomeiwen.com/i6461854/6fb7ff691cf8f1c7.png)
![](https://img.haomeiwen.com/i6461854/a4b639797a5df40f.png)
![](https://img.haomeiwen.com/i6461854/4deab2182f5938b8.png)
效果是:
![](https://img.haomeiwen.com/i6461854/57c9e4b29b3cf1cd.png)
网友评论