Создание изображения с углом в форме «следа укуса»Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Создание изображения с углом в форме «следа укуса»

Сообщение Anonymous »

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

Код: Выделить всё

class ClipPathImageView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0) : AppCompatImageView(context, attrs, defStyleAttr) {

private val path = Path()

override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
super.onSizeChanged(w, h, oldw, oldh)

path.reset()

val cornerRadius = 50f
val cutoutRadius = 100f
val cutoutWidth = cutoutRadius
val cutoutHeight = cutoutRadius

val padding = 0f
val pathLeft = padding
val pathRight = width - padding
val pathTop = padding
val pathBottom = height.toFloat() - padding

val cutoutXStart = width / 2 - cutoutWidth
val cutoutXEnd = cutoutXStart + cutoutWidth * 2
val topCutoutYStart = pathTop - cutoutHeight
val topCutoutYEnd = pathTop + cutoutHeight

path.moveTo(pathLeft + cornerRadius, pathTop)

path.lineTo(cutoutXStart, pathTop)

path.arcTo(RectF(cutoutXStart + w/2, topCutoutYStart, cutoutXEnd + w/2, topCutoutYEnd), 180f, -90f)

path.lineTo(pathRight, pathBottom)

path.lineTo(pathRight, pathBottom)

path.lineTo(pathLeft, pathBottom)

path.lineTo(pathLeft, pathBottom)

path.lineTo(pathLeft, pathTop + cornerRadius)

path.arcTo(RectF(pathLeft, pathTop, pathLeft + cornerRadius * 2, pathTop + cornerRadius * 2), 180f, 90f)

path.close()
}

override fun onDraw(canvas: Canvas) {

canvas.save()
canvas.clipPath(path)
super.onDraw(canvas)
canvas.restore()
}
}
Приведенный выше код — это то, что у меня есть на данный момент.
А вот форма:
[img]https:/ /i.sstatic.net/7ouiPRge.png[/img]

Под формой прикуса я имею в виду что-то вроде этого:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/790 ... ped-corner
Ответить

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

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

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

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

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