简单总结一下,a是触摸点,f是触摸点相对的边缘角,eh我们设置为af的垂直平分线,则g是af的中点,ab、ak、dj是直线;曲线cdb是起点为c,控制点为e,终点为b的二阶贝塞尔曲线;曲线kij是起点为k,控制点为h,终点为j的二阶贝塞尔曲线,区域A、B、C就由这些点和线划分开来。我们将这些点称为标识点,下一步就是模拟设定a和f点的位置,将这组标识点绘制到屏幕上来验证我们的计算公式是否正确,创建BookPageView
public class BookPageView extends View {
private Paint pointPaint;//绘制各标识点的画笔
private Paint bgPaint;//背景画笔
private MyPoint a,f,g,e,h,c,j,b,k,d,i;
private int defaultWidth;//默认宽度
private int defaultHeight;//默认高度
private int viewWidth;
private int viewHeight;
public BookPageView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context,attrs);
}
private void init(Context context, @Nullable AttributeSet attrs){
defaultWidth = 600;
defaultHeight = 1000;
viewWidth = defaultWidth;
viewHeight = defaultHeight;
a = new MyPoint(400,800);
f = new MyPoint(viewWidth,viewHeight);
g = new MyPoint();
e = new MyPoint();
h = new MyPoint();
c = new MyP 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 oint();
j = new MyPoint();
b = new MyPoint();
k = new MyPoint();
d = new MyPoint();
i = new MyPoint();
calcPointsXY(a,f);
pointPaint = new Paint();
pointPaint.setColor(Color.RED);
pointPaint.setTextSize(25);
bgPaint = new Paint();
bgPaint.setColor(Color.GREEN);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//为了看清楚点与View的位置关系绘制一个背景
canvas.drawRect(0,0,viewWidth,viewHeight,bgPaint);
//绘制各标识点
canvas.drawText(“a”,a.x,a.y,pointPaint);
canvas.drawText(“f”,f.x,f.y,pointPaint);
canvas.drawText(“g”,g.x,g.y,pointPaint);
canvas.drawText(“e”,e.x,e.y,pointPaint);
canvas.d