Сейчас углубляюсь в Canvas и рисую собственные виды. Я только что создал круглый прямоугольник с рамкой с помощью этого кода (мой метод onDraw):
paint.color = Color.RED краска.стиль = Краска.Стиль.ЗАПОЛНЕНИЕ val angularRadius = 150f вал инсультWidth = 12f val rect = RectF( rootView.left.toFloat() +strokeWidth, rootView.top.toFloat() +strokeWidth, rootView.right.toFloat() - ширина штриха, rootView.bottom.toFloat() - ширина штриха ) Canvas.drawRoundRect(rect, angularRadius, angularRadius, краска) краска.стиль = Краска.Стиль.ОБМОК краска.цвет = Цвет.ЗЕЛЕНЫЙ Paint.strokeWidth = ширина штриха Canvas.drawRoundRect(rect, angularRadius, angularRadius, краска) Я хочу добиться анимации (змеиного прогресса) для этой границы. В прошлый раз я делал нечто подобное — анимацию границы круга, где drawArc с динамически изменяемым углом в объекте Animation отлично справился со своей задачей. Однако на этот раз я не могу использовать drawArc, поскольку требуется другая форма. Я прикрепляю изображение, где указал, где я хочу, чтобы анимация начиналась. Я думал о создании объекта Path, но понятия не имею, как начать рисовать с правого нижнего угла (сразу после закругленной части). Кто-нибудь уже работал с чем-то подобным?
В прошлый раз (для круга, как упоминалось ранее) я сделал что-то вроде этого:
canvas.drawArc(rect, START_ANGLE_POINT, угол, false, краска) и класс Animation:
частный внутренний класс CountdownAnimation(private val roundCountdownView: RoundCountdownView): Animation() { переопределить fun applyTransformation(interpolatedTime: Float, t: Transformation?) { roundCountdownView.angle = 360f * interpolatedTime roundCountdownView.requestLayout() } } Я хотел бы добиться чего-то подобного, но не могу найти в Интернете ничего полезного. Уже нашел этот вопрос SO, но я думаю, что делать это с помощью растровых изображений излишне для этой конкретной проблемы. Я буду признателен за любые предложения. Заранее спасибо!
