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的可以看简介联系我,也可以私信我,我每天都看私信的