Как нарисовать фигуру как на картинке ниже - PullRequest
1 голос
/ 12 июня 2019

Пожалуйста, помогите мне нарисовать фигуру, как на картинке ниже.Я пробовал много вещей, но ни один код не работал.

Image of expected output, blue curve above grey

Это то, что я пробовал

 private Point mFirstCurveStartPoint = new Point();
 private Point mFirstCurveEndPoint = new Point();

 .................................................
 .................................................

      mFirstCurveStartPoint.set((mNavigationBarWidth / 2) - (CURVE_CIRCLE_RADIUS * 2) - (CURVE_CIRCLE_RADIUS / 3), 0);
    // the coordinates (x,y) of the end point after curve
      mFirstCurveEndPoint.set(mNavigationBarWidth / 2, CURVE_CIRCLE_RADIUS + (CURVE_CIRCLE_RADIUS / 4));

    mFirstCurveControlPoint1.set(mFirstCurveStartPoint.x + CURVE_CIRCLE_RADIUS + (CURVE_CIRCLE_RADIUS / 4), mFirstCurveStartPoint.y);
    // the coordinates (x,y)  of the 2nd control point on a cubic curve
    mFirstCurveControlPoint2.set(mFirstCurveEndPoint.x - (CURVE_CIRCLE_RADIUS * 2) + CURVE_CIRCLE_RADIUS, mFirstCurveEndPoint.y);

     mPath.reset();
    mPath.moveTo(0, 0);
    mPath.lineTo(mFirstCurveStartPoint.x, mFirstCurveStartPoint.y);

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

Есть ли способ сделать это с помощью макета Xml

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

Поскольку я не могу добавлять комментарии из-за низкой репутации, проверьте эту ссылку .

Добавление другой ссылки, если вы собираетесь использовать Java здесь ,в разделе Области отличный пример того, как добиться своей формы, используя setVisible.

1 голос
/ 13 июня 2019

Если у вас есть изображение в формате svg, используйте Asset Studio , чтобы преобразовать его в формат XML для рисования.В противном случае используйте такой код:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="500dp"
    android:height="300dp"
    android:viewportWidth="500"
    android:viewportHeight="300">
  <path
      android:pathData="M0,0h500v300h-500z"
      android:fillColor="#e3e3e3"/>
  <path
      android:pathData="M0,80C0,250 487,104 550,247L500,300L0,300"
      android:fillColor="#3e47cb"/>
</vector>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...