Я пытаюсь использовать PathInterpolator для анимации пути, но продолжаю получать следующую ошибку:
java.lang.IllegalArgumentException: The Path cannot loop back on itself.
Давайте посмотрим, как я рисую кривую:
pathCurve.cubicTo(0f, 300f, 500f, 300f, 500f, 300f);я не вижу, как это может зацикливаться на себе: вот рисунок, отображаемый на экране:
, как вы можете видеть сверху, изображениене зацикливаниея вижу значения х только увеличивается правильно?
Вот код, который фактически выдает эту ошибку:
val colorFrom = Color.RED
val colorTo = Color.GREEN
val duration = 10000L
val animator = ObjectAnimator.ofInt(this, "backgroundColor", colorFrom, colorTo)
.setDuration(duration)
animator.setEvaluator( ArgbEvaluator());
animator.interpolator = PathInterpolator(0f,300f,500f, 300f)
animator.start()
, если я закомментирую настройку интерполятора, он работает. Почему я это получаю? также, если отметьте здесь , вы увидите, что PathInterpolator имеет несколько конструкторов. Я использую тот, который соответствует кубической кривой Безье. но даже если я использую public PathInterpolator (Path path) , я получаю, что точки должны быть между 0 и 1 ошибкой. на самом деле ошибка:
java.lang.IllegalArgumentException: The Path must start at (0,0) and end at (1,1)
Я действительно не понимаю этого. Конечно, мои точки больше, чем те, которые я строю на координатной системе x, y, которая начинается с 0,0 верхнего левого угла. Кто-нибудь может мне помочь ?