Динамическая анимация VectorDrawable в Java вместо анимированного векторного рисования

Я использовал animated-vector в XML, чтобы оживить некоторые из моих векторов с помощью trimPathEnd и т.д. с чем-то вроде этого, например:

<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
 android:drawable="@drawable/vectordrawable" >
  <target android:name="main_path">
<aapt:attr name="android:animation">
  <objectAnimator
    android:duration="1000"
    android:interpolator="@android:interpolator/fast_out_linear_in"
    android:propertyName="trimPathEnd"
    android:valueFrom="0"
    android:valueTo="1"/>
</aapt:attr>
</target>
</animated-vector>

Однако я хотел бы знать, возможно ли использовать trimPathEnd или trimPathStart без использования анимации, потому что я хотел бы создать макет, в котором вектор рисуется на основе смещения касания экрана, поэтому я предполагаю что-то вроде vector.setTrimPathEnd(0.2f); это то, что мне нужно для динамического изменения конца пути в Java на основе определенного смещения. Вся информация, которую я мог найти, состояла в том, чтобы сделать это через animated-vector это не то поведение, которое мне нужно здесь.

1 ответ

Вот что говорит документ Лотти:

Плюсы Лотти против AnimatedVectorDrawable

  • Поддерживает гораздо больший набор функций After Effects.
  • Вручную установите прогресс для подключения анимации к жесту, событию и т. Д. > - загрузка анимации из сети.
  • Динамическая скорость воспроизведения.
  • Маски сглажены.
  • Динамически изменить цвет определенной части анимации

Что он упоминает Lottie Можно Manually set progress и AVD не может. Я не могу найти официальный документ Android для этого, но я верю, что это правда, потому что если вы посмотрите на AnimatedVectorDrawable код, никакой метод не позволяет получить или установить прогресс анимации.

Так что подумайте об использовании Lottie вместо этого, много интересных функций и целая куча ресурсов сообщества

Другие вопросы по тегам