Android – Создание – Создание произвольной фигурыAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Android – Создание – Создание произвольной фигуры

Сообщение Гость »


Я пытался создать эту фигуру в Compose


Изображение


Я чувствую, что довольно близок к этому, но не могу найти способ сделать закругленную форму внизу. Я пробовал использовать кривую Безье с cubicTo, но у меня не получилось. Любая помощь будет очень признательна, Заранее спасибо ! :D

Вот код
класс PromptShape( частный вал shapeData: PromptShapeData, ) : Форма { переопределить удовольствие createOutline( размер: Размер, LayoutDirection: LayoutDirection, плотность: Плотность ): Схема = Outline.Generic( Путь().применить { val indentShapeData = IndentShapeData (высота = -7f) вал стрелкаВысота = 14f вал стрелкаWidth = 34f val angularShape = size.minDimension * (50/100f) val капсулаHeight = size.height - стрелкаВысота перезагрузить() moveTo(cornerShape, 0f) lineTo(size.width - angularShape, 0f) // Верхний правый угол arcTo( прямой = Прямой( смещение = Смещение(размер.ширина - angularShape, 0f), размер = Размер (угловая форма, угловая форма) ), startAngleDegrees = 270f, разверткаАнглеградес = 90f, ForceMoveTo = ложь ) // 6. Нижний правый угол arcTo( прямой = Прямой( смещение = Смещение(размер.ширина - угловая форма, капсулаВысота - угловая форма), размер = Размер (угловая форма, угловая форма) ), startAngleDegrees = 0f, разверткаАнглеградес = 90f, ForceMoveTo = ложь ) // 7. Нижняя строка справа налево lineTo(size.width - angularShape, капсулаВысота) val стрелкаHalfWidth = стрелкаWidth / 2 val rightArrow = (size.width / 2 - стрелкаHalfWidth) // 5. Нижняя линия по центру -> Слева. lineTo (стрелка вправо, капсулаВысота) // кубическийTo(71f, 34f, 87f, 0f, startX, size.height) // кубическийTo( // 23f, 0f, // 39ф, 34ф, // (размер.ширина / 2 - ширина стрелки), размер.высота // ) lineTo(size.width - angularShape, капсулаВысота) // 8. Нижняя левая дуга, указывающая на левый верхний угол arcTo( прямой = Прямой( смещение = Смещение (0f, капсулаВысота - угловая форма), размер = Размер (угловая форма, угловая форма) ), startAngleDegrees = 90f, разверткаАнглеградес = 90f, ForceMoveTo = ложь ) //9. Линия снизу вверх с правой стороны lineTo(0f, angularShape) //Верхняя правая дуга arcTo( прямой = Прямой( смещение = Смещение(0f, 0f), размер = Размер (угловая форма, угловая форма) ), startAngleDegrees = 180f, разверткаАнглеградес = 90f, ForceMoveTo = ложь ) закрывать() } ) } класс данных PromptShapeData( val xIndent: Float = 0f, высота значения: Float = 0f, ширина значения: Float = 32f, val angularRadius: CornerSize = CornerSize(50) )
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»