Android PathInterpolator - конечные точки (0, 0) и (1, 1) предполагаются, почему? - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь использовать PathInterpolator для анимации пути, но продолжаю получать следующую ошибку:

 java.lang.IllegalArgumentException: The Path cannot loop back on itself.

Давайте посмотрим, как я рисую кривую:

pathCurve.cubicTo(0f, 300f, 500f, 300f, 500f, 300f);я не вижу, как это может зацикливаться на себе: вот рисунок, отображаемый на экране:

andro

, как вы можете видеть сверху, изображениене зацикливаниея вижу значения х только увеличивается правильно?

Вот код, который фактически выдает эту ошибку:

 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 верхнего левого угла. Кто-нибудь может мне помочь ?

...