Динамическая анимация 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
вместо этого, много интересных функций и целая куча ресурсов сообщества