Свойства Android, которые можно анимировать с помощью ObjectAnimator

Я начинаю играть с анимацией свойств вместо анимации представления, поскольку у меня есть представление, которое нужно масштабировать и отталкивать другие, как это происходит. Я видел несколько примеров, но мне просто интересно, есть ли где-нибудь список свойств, которые можно изменить с помощью этих классов. Например, я видел один туториал, который делал быстрое вращение, используя:

ObjectAnimator.ofFloat(aniView, "rotation", 360)

Это довольно круто, но я бы не знал о свойстве вращения, если бы не этот точный учебник, есть ли какой-нибудь исчерпывающий список того, что можно сделать? Конкретное свойство, которое я хочу анимировать, - это вес представления в LinearLayout, если у кого-то есть какие-либо советы по этому поводу.


person Cathal Comerford    schedule 24.07.2012    source источник


Ответы (4)


Лучше поздно, чем никогда, поэтому вот полный список свойств, которые можно анимировать с помощью ObjectAnimator.

http://developer.android.com/guide/topics/graphics/prop-animation.html#views

person Onyx    schedule 08.02.2013
comment
Интересно, это полный список? На 9OldAndroid есть пример, который анимирует цвет фона представления, который не указан в списке. nineoldandroids.com ObjectAnimator.ofInt(this, "backgroundColor", /*Red*/0xFFFF8080, /*Blue*/0xFF8080FF); - person Some Noob Student; 20.06.2014
comment
Список неполный, в списке есть xFraction и yFraction, которые работают (см. в DevBytes Sliding Fragments sample< /а>) - person Matthieu Harlé; 17.09.2014
comment
Этот список даже отдаленно не исчерпывающий, поскольку его можно использовать для любого доступного объекта с любым доступным сеттером. - person Jason Hartley; 19.07.2016

документы подразумевают, что можно использовать любое значение. с ObjectAnimator, если вы следуете соглашению об именах:

  1. The object property that you are animating must have a setter function (in camel case) in the form of set<propertyName>(). Because the ObjectAnimator automatically updates the property during animation, it must be able to access the property with this setter method. For example, if the property name is foo, you need to have a setFoo() method. If this setter method does not exist, you have three options:
    • Add the setter method to the class if you have the rights to do so.
    • Используйте класс-оболочку, на изменение которого у вас есть права, и пусть эта оболочка получает значение с допустимым методом установки и перенаправляет его исходному объекту.
    • Вместо этого используйте ValueAnimator.
  2. [...]

Что касается вашего вопроса, 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.

person bcorso    schedule 29.06.2014

Вот полный список имен свойств, которые вы ищете:

  • вращение
  • вращениеX
  • вращениеY
  • переводX
  • переводY
  • шкалаX
  • масштабY
  • пивотX
  • поворотный Y
  • альфа
  • x
  • y

Источник: документы

person Sagar    schedule 10.09.2017

Используйте «translateX» или «transalteY», чтобы переместить <group> Взгляните на vectorDrawable

person Milk Littile    schedule 22.02.2019