int high = 90;//底部导航的高度 int marginTop = 30;//剧顶边高度 int x1 = (int)width/2; //120 参考1080/3 int x2 = (int)(width/2); //130 参考1080/2.8 int x3 = (int)(width/2); //140 参考1080/2.6 a.x = x1; //dip2px(120) a.y = dip2px(marginTop); b.x = x2; //dip2px(130) b.y = dip2px(marginTop); c.x = x3; //dip2px(140) c.y = dip2px(marginTop-10); a2.x = c.x; a2.y = c.y; b2.x = width / 2; b2.y = dip2px(-10); c2.x = width - x3; //dip2px(140) c2.y = dip2px(marginTop-10); a3.x = c2.x; a3.y = c2.y; b3.x = width - x2; //dip2px(130) b3.y = dip2px(marginTop); c3.x = width - x1; //dip2px(120) c3.y = dip2px(marginTop); // paint.setColor(Color.BLACK); paint.setShadowLayer(30, 0, 20, Color.parseColor("#000000")); //画圆角 // paint //moveTo 用来移动画笔 path.moveTo(0, dip2px(marginTop));//设置下一个轮廓线的起始点(x,y)。第一个点 path.lineTo(a.x, a.y); //绘制到贝塞尔曲线第一个点 也就是a1点 path.quadTo(b.x, b.y, c.x, c.y);//第左边曲线 path.quadTo(b2.x, b2.y, c2.x, c2.y);//中间曲线 path.quadTo(b3.x , b3.y, c3.x, c3.y );//第右边曲线 path.lineTo(width, dip2px(marginTop)); //画线 path.lineTo(width, dip2px(high));//画线 path.lineTo(0, dip2px(high)); path.close(); RectF r2 = new RectF(); r2.left = 50; r2.right = 250; r2.top = 200 ; r2.bottom = 300; canvas.drawRoundRect(r2, 20, 20, paint); canvas.drawPath(path, paint); //绘制路径 使用指定的油漆绘制指定的路径。路径将根据绘画的风格被填充或框起来。注释
时间: 2024-02-05 11:04:12 浏览: 95
根据你提供的代码,你想要画一个底部导航栏,包含一个圆角矩形和三个贝塞尔曲线。其中,圆角矩形的代码已经被注释掉了,你想要了解如何画贝塞尔曲线。
贝塞尔曲线是一种平滑曲线,由起始点、控制点和结束点组成。在Android中,可以使用Path类的quadTo方法来画二阶贝塞尔曲线。
以下是画三个贝塞尔曲线的代码:
```java
// 创建一个Path对象
Path path = new Path();
// 移动到起始点
path.moveTo(0, dip2px(marginTop));
// 绘制第一条曲线
path.lineTo(a.x, a.y);
path.quadTo(b.x, b.y, c.x, c.y);
// 绘制第二条曲线
path.quadTo(b2.x, b2.y, c2.x, c2.y);
// 绘制第三条曲线
path.quadTo(b3.x , b3.y, c3.x, c3.y);
// 画线连接到右上角
path.lineTo(width, dip2px(marginTop));
// 画线连接到右下角
path.lineTo(width, dip2px(high));
// 画线连接到左下角
path.lineTo(0, dip2px(high));
// 闭合路径
path.close();
// 使用指定的Paint对象绘制路径
canvas.drawPath(path, paint);
```
解释一下代码:
首先,我们创建一个Path对象,用于存储贝塞尔曲线的轮廓线。然后,使用moveTo方法将画笔移动到起始点。
接着,我们使用lineTo方法画一条直线到第一个曲线的起始点a,然后使用quadTo方法画一条二阶贝塞尔曲线。其中,b是控制点,c是结束点。
然后,我们继续使用quadTo方法画第二条和第三条曲线。注意,在第二条曲线中,我们需要使用上一个曲线的结束点c作为起始点a2。
最后,我们使用lineTo方法画线连接到右上角、右下角和左下角,然后使用close方法闭合路径。最后,使用drawPath方法将路径绘制出来。
希望以上代码能够帮助到你!
阅读全文