Вращение Android не работает в ObjectAnimator

Я использую Animator XML для анимации ImageView. ImageView должен увеличиваться (от 0f до 1f, Y быстрее, чем X) и поворачиваться на 90° от 90 до 0. Я использую этот файл XML для анимации:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="together">
    <objectAnimator
        android:duration="500"
        android:propertyName="scaleY"
        android:valueFrom="0f"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:valueTo="1f"
        android:valueType="floatType" />

    <objectAnimator
        android:duration="1000"
        android:propertyName="scaleX"
        android:valueFrom="0f"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:valueTo="1f"
        android:valueType="floatType" />

    <objectAnimator
        android:duration="1000"
        android:transformPivotX="0dp"
        android:transformPivotY="0dp"
        android:interpolator="@android:anim/linear_interpolator"
        android:propertyName="rotate"
        android:valueFrom="90"
        android:valueType="floatType"
        android:valueTo="0" />

</set>

Когда я применяю Animator с помощью

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(this,
                R.animator.login_bubble_animation);
        set.setTarget(mContactBubble);
        set.start();

работает все, кроме поворота, поэтому ImageView растет, но не вращается. я уже использовал

RotateAnimation rotate = new RotateAnimation(90, 0, Animation.RELATIVE_TO_SELF,
            0.5f,  Animation.RELATIVE_TO_SELF, 0.5f);
    rotate.setDuration(1000);
    mContactBubble.startAnimation(rotate);

который действительно работает, но было бы преимуществом, если бы он находился внутри файла XML.


person Jonas Drotleff    schedule 14.09.2015    source источник
comment
android:propertyName=rotationX или вращениеY   -  person mt0s    schedule 14.09.2015
comment
@ mt0s это работает, но я хочу вращение вокруг оси z.   -  person Jonas Drotleff    schedule 14.09.2015


Ответы (2)


ваше имя строки свойства rotate недействительно. Вам нужно использовать rotation или еще rotationX и/или rotationY, точно так же, как вы делали для масштаба. http://developer.android.com/guide/topics/graphics/prop-animation.html#views для списка свойств, которые работают с ObjectAnimator

person stewjacks    schedule 14.09.2015
comment
Сработало, спасибо. Забавно видеть, что даже после 5 лет программирования такие мелкие ошибки приводят в отчаяние. - person Jonas Drotleff; 14.09.2015

Вы используете свойство с неправильным названием: rotate. Должно быть rotation.

Класс представления должен иметь сеттеры и геттеры для этого атрибута, чтобы он был доступен как свойство.

person Simas    schedule 14.09.2015