Android开发贝塞尔曲线

123 阅读1分钟
Android开发贝塞尔曲线

贝塞尔曲线小示例,一般圆弧的需求就用到贝塞尔曲线

一、思路:

Path.quadTo

二、效果图:

在这里插入图片描述

三、关键代码:
public class ArcHeaderView extends View {
    private Paint mPaint;
    private PointF mStartPoint,mEndPoint,mControlPoint;
    private int mArcHeight; //圆弧高度
    private int mSolidColor; //填充的颜色
    private Path mPath = new Path();

    public ArcHeaderView(Context context) {
        this(context,null);
    }

    public ArcHeaderView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs,0);
    }

    public ArcHeaderView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        init();
    }

    private void init(){
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setStyle(Paint.Style.FILL);

        mStartPoint = new PointF(0, 0);
        mEndPoint = new PointF(0, 0);
        mControlPoint = new PointF(0, 0);

        mArcHeight = dip2px(getContext(),52);
        mSolidColor = Color.parseColor("#ff1e2b39");

    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);

        mPath.reset();
        //先画矩形
        mPath.moveTo(0,0);
        mPath.addRect(0, 0, w, h - mArcHeight, Path.Direction.CCW);

        mStartPoint.x = 0;
        mStartPoint.y = h - mArcHeight;

        mEndPoint.x = w;
        mEndPoint.y = h - mArcHeight;

        mControlPoint.x = w / 2 ;
        mControlPoint.y = h +dip2px(getContext(),42);

        invalidate();
    }
四、项目demo源码结构图:

在这里插入图片描述

有问题或者需要完整源码demo的可以看简介联系我,也可以私信我,我每天都看私信的