Ответ 1
Лучше поздно, чем никогда, так что вот полный список свойств, которые можно анимировать с помощью ObjectAnimator.
http://developer.android.com/guide/topics/graphics/prop-animation.html#views
Я начинаю играть с анимациями анимации в анимации вида, поскольку у меня есть представление, которое нужно масштабировать и толкать других так, как оно есть. Я видел несколько примеров, но мне просто интересно, есть ли где-нибудь, где представлен список свойств, которые можно изменить с помощью этих классов. Например, я увидел один учебник, который быстро вращался, используя:
ObjectAnimator.ofFloat(aniView, "rotation", 360)
Что довольно круто, но я бы не знал свойства вращения, если бы не этот точный учебник, есть ли исчерпывающий список того, что можно сделать? Конкретное свойство, которое я хочу оживить, - это вес представления в LinearLayout, если у кого есть какие-либо рекомендации по этому поводу.
Лучше поздно, чем никогда, так что вот полный список свойств, которые можно анимировать с помощью ObjectAnimator.
http://developer.android.com/guide/topics/graphics/prop-animation.html#views
Docs подразумевают, что любое значение может использоваться с ObjectAnimator
, если вы следуете соглашению об именах:
- Свойство объекта, которое вы анимируете, должно иметь функцию setter (в случае верблюда) в форме
set<propertyName>()
. Потому как ObjectAnimator автоматически обновляет свойство во время анимации, он должен иметь доступ к свойству с помощью этого установщика метод. Например, если имя свойстваfoo
, вам необходимо иметьsetFoo()
. Если этот метод сеттера не существует, у вас есть три опции:
- Добавьте метод setter к классу, если у вас есть права на Сделай так.
- Используйте класс оболочки, который у вас есть права на изменение, и эта оболочка получает значение с помощью действительного метода setter и forward это к исходному объекту.
- Вместо этого используйте ValueAnimator.
- [...]
В отношении вашего вопроса View
имеет метод setRotation(float)
-, который дает вам подсказку, которую он может использовать. В частности, здесь вы можете сделать это с помощью TimeInterpolator
:
ObjectAnimator anim = ObjectAnimator.ofFloat(myView, "rotation", 0f, 90f);
anim.setDuration(2000); // Duration in milliseconds
anim.setInterpolator(timeInterpolator); // E.g. Linear, Accelerate, Decelerate
anim.start() // Begin the animation
Вы можете прочитать документы для более подробной информации о ожиданиях ObjectAnimator
.
Вот полный список имен свойств, которые вы ищете:
Источник: Документы