Создание треугольной формы в нижней части макета - PullRequest
0 голосов
/ 28 января 2020

Я работаю над приложением android, которое содержит форму в верхней части упражнения, и я пытаюсь реализовать ее, но изо всех сил пытаюсь это сделать. the shape in the green color

Я попытался создать нарисованный файл, который создает форму треугольника и устанавливает радиус нижнего угла, чтобы соответствовать форме выше, но не работает. кто-нибудь может мне помочь, пожалуйста.

1 Ответ

1 голос
/ 28 января 2020

Вы можете использовать EdgeTreatment, включенный в официальную библиотеку компонентов Material .

Просто расширьте EdgeTreatment чем-нибудь например:

public class MyTriangleEdge extends EdgeTreatment {

  private final float size;
  private final boolean inside;

  public MyTriangleEdge(float size, boolean inside) {
    this.size = size;
    this.inside = inside;
  }

  @Override
  public void getEdgePath(
      float length, float center, float interpolation, @NonNull ShapePath shapePath) {
    shapePath.lineTo(0, 0);
    shapePath.lineTo(center, inside ? size  : -size );
    shapePath.lineTo(length, 0);
  }

и затем применить его:

MyTriangleEdge edgeTreatment = new MyTriangleEdge(height,false);

LinearLayout linearLayout= findViewById(R.id.xxxx);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
    .toBuilder()
    .setBottomEdge(edgeTreatment)
    .build();

MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);

ViewCompat.setBackground(linearLayout,shapeDrawable);

enter image description here

Также для обработки кромок родительское представление должно отключить вырезать детей, установив android:clipChildren="false" в xml.

...