在自定义视图中使用Android绘制仅具有一侧曲线的矩形

4

我需要在View Android上绘制这个形状(矩形或其他方式),只有一侧是曲线。其中1个面是纯色,另一个曲线面是透明的。如何绘制此形状?

public class CurveView extends View {
     @Override
     protected void onDraw(Canvas canvas) {
         // how to ????
     }
}

像这样:

在此输入图像描述

谢谢。


2
canvas.drawPath(path, paint) - pskink
1
阅读此页面上的信息 Android Path,然后编写一些代码。如果遇到错误或结果与您预期不同,请回来提出具体问题。 - Alex
@Alex,Android的路径和图形比较复杂,需要花费很长时间。你能帮我画一下吗? - Farzad
1个回答

4

解决方案:

更新:

public class MyView extends View {

    private Paint paint;
    private Path path;

    public MyView(Context context) {
        super(context);
        init();
    }

    public void init() {

        path = new Path();

        paint = new Paint();
        paint.setAntiAlias(true);
        paint.setDither(true);
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.RED);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        canvas.drawColor(Color.TRANSPARENT);
        paint.setShader(null);

        float width = getWidth();
        float height = getHeight();

        path.moveTo(0, 0);

        path.lineTo(0, height);

        path.lineTo(width, height);

        path.lineTo(width, 0);

        path.cubicTo(4*width/6, 3*height/4, 2*width/6, 3*height/4, 0, 0);

        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.FILL);
        canvas.drawPath(path, paint);

    }

}

你能展示一下定义“paint”变量和“path”的部分吗?谢谢。 - Faustino Gagneten
@FaustinoGagneten 更新完成。请检查并重新构建视图。 - Farzad
你的回答太棒了。我只是想知道如何使这个视图从外面变得曲线,我的意思是像问题中展示的图片一样呈现出曲线。但我想要它的反面和两侧都是这样的??? - Aditya
@HeisenBrg,这很简单。你只需要更改path.cubicTo(....)中的点和曲线点,以符合你理想中的要求即可。 - Farzad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接