在Android中使用画布和路径创建自定义视图

在Android中使用画布和路径创建自定义视图,android,android-studio,android-canvas,Android,Android Studio,Android Canvas,我想创建我的自定义视图。从下到上有轻微正弦曲线的视图只有简单的其他视图,我想选择任何颜色。我想为那个视图选择渐变色 我尝试的 我在代码中尝试了一个SineView和另一个WaveView,但它不会像预期的那样工作 protected void onDraw(Canvas canvas) { super.onDraw(canvas); int width = canvas.getWidth(); int height = canvas.getHeight(); ca

我想创建我的自定义视图。从下到上有轻微正弦曲线的视图只有简单的其他视图,我想选择任何颜色。我想为那个视图选择渐变色

我尝试的

我在代码中尝试了一个SineView和另一个WaveView,但它不会像预期的那样工作

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    int width = canvas.getWidth();
    int height = canvas.getHeight();
    canvas.save();
    canvas.translate(0, getMeasuredHeight() / 2F);
    canvas.clipRect(0, -100, 450, 100, Region.Op.INTERSECT);
    Path mPath = new Path();
    mPath.moveTo(0, 100);
    mPath.quadTo(50, -50, 100, 0);
    mPath.quadTo(150, 50, 200, 0);
    mPath.quadTo(250, -50, 300, 0);
    mPath.quadTo(350, 50, 400, 0);
    mPath.quadTo(450, -50, 500, 100);
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.GRAY);
    canvas.drawPath(mPath, paint);
    canvas.restore();
}
预期视图


我还希望视图的高度可以随着包裹内容的增加而增加。我不想增加正弦曲线,只是想增加布局的高度。

你能分享你尝试的截图吗?发布你的
SineView
的全部代码。好的,你发布了预期的视图,但是你的代码得到了什么?究竟是什么问题?错误的
路径
?感谢@pskink的回答。我不知道是什么问题。我只是在学习canvas,希望实现这种类型的视图,它从底部保持不变,并随着高度的增加而扩展。谢谢大家的评论。现在我找到了解决办法。