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