Добавить анимацию во время выполнения
Я хочу анимировать мой AnimatedVectorDrawable
во время выполнения без использования файлов .xml
. На самом деле я использую файлы .xml
так же, как показывают образцы документации:
AnimatedVectorDrawable
Итак, у меня есть vector_drawable.xml
содержит <vector>
с вложенными <group>
и <path>
, которые определяют форму.
Для этого вектора я animated_vector_drawable.xml
содержит <animated-vector>
с android:animation
, который соответствует <target>
.
Последний шаг определяет файл анимации rotation.xml
с помощью <objectAnimator>
, который используется animated_vector_drawable.xml
Все работает отлично, но проблема возникает, когда мне нужно создать много разных форм (векторов) с множеством разных или похожих анимаций, потому что это генерирует много файлов .xml
.
-
Я не могу включить готовый и подготовленный <vector>
из одного файла .xml
в другой (какой-то тэг <include>
), поэтому мне нужно скопировать тот же код в другие файлы. Это очень раздражает.
-
Если я хочу использовать ту же анимацию для нескольких элементов <target>
, но каждая анимация должна иметь f.e. (alpha
, rotation
, interpolator
...), я должен создать новый .xml
файл содержит <objectAnimator>
с измененным значением одного свойства вместо того, чтобы использовать тот же самый, один файл с измененным стоимость имущества. Это также раздражает.
-
Я обнаружил, что могу использовать ObjectAnimator
и устанавливать alpha
и fillColor
для AnimatedVectorDrawable
, но есть проблема, когда я хочу изменить его translateX
, translateY
, rotation
или любые другие свойства. Есть ли способ сделать это без .xml
. Я просто хочу иметь доступ к <group>
Ответы
Ответ 1
Конструктор, который вы использовали, создает анимацию с абсолютными значениями (пикселями).
TranslateAnimation in = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 1.0f,
Animation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f);
Попробуйте использовать Animation.RELATIVE_TO_PARENT в соответствии с вашими потребностями.