Конечный продукт должен не просто иметь верхний правый угол с изогнутой внутрь, но должен выглядеть так, как будто кто-то откусил этот угол, чтобы на нем остались следы зубов. Я не понимаю этого достаточно хорошо, чтобы самому создать часть укуса, но я надеялся, что кто-нибудь здесь сможет мне с этим помочь.
Код: Выделить всё
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
Мобильная версия