Я рисую пользовательскую фигуру в onDraw с Paint
и Canvas
.Внутри класса onDraw у меня есть прямоугольник clipPath
.
. Я хотел бы иметь возможность анимировать положение (анимировать слева направо) для clipPath
из MainActivity
.Это скроет нарисованную фигуру (BlackGraph) слева направо.
class BlackGraph(context: Context) : View(context) {
var clipAmount:Float = 0.0f
override fun onDraw(canvas: Canvas) {
val paint = Paint()
paint.style = Paint.Style.FILL
paint.color = Color.parseColor("#000000")
val path = Path()
val clipPath = Path()
clipPath.addRect(clipAmount, 0f, width.toFloat(), height.toFloat(), Path.Direction.CW)
canvas.clipPath(clipPath)
path.moveTo(0f, height-30.toFloat())
path.lineTo(width.toFloat(), 0f)
path.lineTo(width.toFloat(), height.toFloat())
path.lineTo(0f, height.toFloat())
path.lineTo(0f, 0f)
canvas.drawPath(path, paint)
}
}
In onCreate :
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val layout1 = findViewById<android.support.constraint.ConstraintLayout>(R.id.layout1)
val blackGraph = BlackGraph(this)
layout1.addView(blackGraph)
val valueAnimator = ValueAnimator.ofFloat(0f, 450f)
valueAnimator.addUpdateListener {
val value = it.animatedValue as Float
println("Value -> $value")
blackGraph.clipAmount = value
}
valueAnimator.duration = 2000
valueAnimator.start()
}
Я пытаюсь просто анимировать позициюclipAmount для достижения желаемой анимации.
Проблема в onCreate
, значение clipAmount никогда не анимируется.Однако заявление о печати работает просто отлично.Logcat полон значений с плавающей точкой в диапазоне от 0,0 до 450,0
Как я могу анимировать движение clipPath
?