Android-анимации в процентах библиотеки

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

В частности, у меня есть следующий элемент в моем макете XML:

 <ImageView
        android:id="@+id/aImage"
        android:src="@drawable/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_marginTopPercent="35%"
        android:layout_centerHorizontal="true"
        android:visibility="invisible"/>

Со следующим атрибутом, назначенным для корня PercentRelativeLayout элемент:

xmlns:app="http://schemas.android.com/apk/res-auto"

Теперь я хочу создать AnimatorSetобъект, который может выполнять несколько манипуляций с акцентом на app:layout_marginTopPercent="35%" приписывать.

Я попытался создать ObjectAnimator и добавить его в AnimatorSet, но это не имеет никакого эффекта:

ObjectAnimator anim1 = ObjectAnimator.ofFloat(logoImageView, "layout_marginTopPercent", 0.35f, 0.1f);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playSequentially(anim1);
animatorSet.start(); 

Кто-нибудь может объяснить, пожалуйста, где я иду не так. Интересно, что я могу создать анимационный XML-файл и использовать элемент translate для успешной анимации, но мне нужно сделать это в коде. Ниже приведен пример успешной анимации.XML:

<set>
        <translate
         android:fromYDelta="0%p"
         android:toYDelta="-25%p"
         android:duration="1000" />
</set>

заранее спасибо

1 ответ

Решение

Новая версия (>=1.3.0) моей библиотеки https://github.com/blipinsk/ViewPropertyObjectAnimator предоставляет возможность анимировать percent параметры из Percent Support Library, Получение ObjectAnimator (который вы можете использовать внутри AnimatorSet) так же просто, как использовать ViewPropertyAnimator,

ObjectAnimator logoMarginAnimator = 
            ViewPropertyObjectAnimator.animate(logoImageView).topMarginPercent(0.1f).get();
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(logoMarginAnimator);
animatorSet.start(); 
Другие вопросы по тегам