Создать кривую CustomView макет - PullRequest
0 голосов
/ 12 ноября 2018

Я создал простой пользовательский вид, который расширяется от RelativeLayout

Я создал эту форму:

        firstPoint.set(0,100);
        secondPoint.set(getWidth(),100);
        thirdPoint.set(getWidth(),getHeight());
        fourthPoint.set(0,getHeight());

        mFirstCurveStartPoint.set((getWidth() / 5) * 4 , 100);
        mFirstCurveEndPoint.set((getWidth() /6) * 5, 0);

        mFirstCurveControlPoint1.set(mFirstCurveStartPoint.x + 100  , mFirstCurveStartPoint.y);
        mFirstCurveControlPoint2.set(mFirstCurveEndPoint.x -100 , mFirstCurveEndPoint.y);

enter image description here

Я хочу быть кривой красной линией, которую я упомянул на изображении, но мой код curve section является ошибкой, и я не могу выбрать правильное число, чтобы создать правильную кривую .. Я думаю, что это неверные значения:

 mFirstCurveControlPoint1.set(mFirstCurveStartPoint.x + 100  , mFirstCurveStartPoint.y);
 mFirstCurveControlPoint2.set(mFirstCurveEndPoint.x -100 , mFirstCurveEndPoint.y);

Это метод ondraw:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    mPath.lineTo(firstPoint.x,firstPoint.y);
    mPath.lineTo(mFirstCurveStartPoint.x,mFirstCurveStartPoint.y);
    mPath.lineTo(mFirstCurveEndPoint.x,mFirstCurveEndPoint.y);

    mPath.cubicTo(mFirstCurveControlPoint1.x, mFirstCurveControlPoint1.y,
            mFirstCurveControlPoint2.x, mFirstCurveControlPoint2.y,
            mFirstCurveEndPoint.x, mFirstCurveEndPoint.y);

    mPath.lineTo(thirdPoint.x,thirdPoint.y);
    mPath.lineTo(fourthPoint.x,fourthPoint.y);
    mPath.close();
    canvas.drawPath(mPath,mPaint);
}
...