2015-05-14 9 views
11

Я хочу анимировать мой AnimatedVectorDrawable во время выполнения без использования .xml файлов. На самом деле я использую .xml файлы точно так же, как образцы показывает документацию по:Добавить анимацию во время выполнения

AnimatedVectorDrawable

Итак, я vector_drawable.xml содержит <vector> с вложенной <group> и <path>, который определяет форму.

Для этого вектора у меня есть animated_vector_drawable.xml содержит <animated-vector> с android:animation asseded to <target>.

Последний шаг определить файл анимации rotation.xml с помощью <objectAnimator>, который используется animated_vector_drawable.xml

Все отлично работает, но появляется проблема, когда мне нужно создать много различных форм (векторов) с множеством различных или подобных анимаций, потому что это генерирует много файлов .xml.

  1. я не могу включить готовый и подготовленный <vector>.xml из одного файла в другой (своем роде <include> тега), поэтому мне нужно, чтобы скопировать код других файлы. Это очень раздражает.

  2. Если я хочу использовать ту же анимацию для нескольких элементов <target>, но каждая анимация должна иметь f.e. другая задержка или любое значение свойства (alpha, rotation, interpolator ...), я должен создать новый файл .xml, содержащий <objectAnimator> с измененным значением одного свойства, вместо того, чтобы использовать один и тот же файл с измененным значением свойства. Это также раздражает.

  3. я обнаружил, что я могу использовать ObjectAnimator и установить alpha & fillColor для AnimatedVectorDrawable, но есть проблема, когда я хочу изменить это translateX, translateY, rotation или любые другие свойства. Есть ли способ сделать это без .xml. Я просто хочу, чтобы иметь доступ к <group>

+2

Как вы это делаете «Я обнаружил, что могу использовать ObjectAnimator и программно программировать alpha & fillColor для AnimatedVectorDrawable» – stack

+3

Да. Я также хотел бы узнать, как обращаться к ObjectAnimator программно здесь. –

+0

Мне также интересно узнать, есть ли решение для этого –

ответ

0

Конструктора, который вы использовали создает анимацию с абсолютными значениями (пикселей).

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 в соответствии с вашими потребностями.

Смежные вопросы