Как обрезать часть ImageView используя градусы угла?
Как обрезать часть ImageView используя градусы угла?
думаю можно сначала рисовать какой нибудь <shape> с определенным углом, и на него картинку с нужным режимом смешивания. Но пока не понял даже как сделать такой <shape>
Ответы (2 шт):
Легко и просто - не получится. Надо кастомную вьюху делать, в которой рисовать сектор на Canvas.
Вот тут есть пара примеров кода по использованию Canvas#drawArc(): https://thoughtbot.com/blog/android-canvas-drawarc-method-a-visual-guide
В вашем случае - надо перекрыть ImageView кастомной вьюхой, размеры которой (ширина и высота, при условии что ImageView - кврадрат) должны быть равны диагонали ImageView. После этого в кастмной вьюхе нарисовать сектор с нужным углом - он перекроет ImageView именно так, как вы описываете.
Нашел решение через path.arcTo и canvas.clipPath.
private val oval = RectF()
override fun onDraw(canvas: Canvas) {
val x = width/2f
val y = height/2f
val radius = width/2f
oval.left = x - radius
oval.top = y - radius
oval.right = x + radius
oval.bottom = y + radius
val path = Path()
path.moveTo(x,y)
path.arcTo(oval, startAngle, sweepAngle)
path.close()
canvas.clipPath(path);
super.onDraw(canvas)
}
