Android: использование ObjectAnimator для перевода представления с дробными значениями измерения представления

Похоже, что старый вид анимации (translate, scaleи т. д.) больше не принимаютсяAnimationInflaterПо крайней мере, как ICS. Я прочитал его код в 4.0.4, и он явно ожидает только элементы XMLset, objectAnimator, animator.

Хотя документация наhttp://developer.android.com/guide/topics/resources/animation-resource.html продолжает включать анимации вида, они выглядят устаревшими. Попытка их использования приводит, например, к ошибкеjava.lang.RuntimeException: Unknown animator name: translate.

Таким образом, становится необходимым использовать AndroidObjectAnimator, Однако он не принимает дробные значения соответствующего измерения самого себя или своего родителя (ширина дляtranslationXнапример), как это делал старый вид анимации в виде"75%p".

ПостроениеObjectAnimator вручную во время выполнения путем программной выборки размера фрагмента не представляется возможным, посколькуFragmentTransaction принимает только декларативную анимацию, указанную остатком.

Моя цель состоит в том, чтобы перевести за пределы экрана фрагмент, который заполняет всю активность (в основном я делаю сменный переход между двумя фрагментами). Это существующийTranslationAnimation реализация (slide_in_right.xml, который вместе со своим коллегойslide_out_left.xml по какой-то причине не выставляется вandroid.R.animи поэтому я должен дублировать их в моей кодовой базе):

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromXDelta="100%p"
    android:toXDelta="0"
    android:duration="@android:integer/config_mediumAnimTime"/>
</set>

Мой уровень API установлен на 14.

Спасибо!

Ответы на вопрос(5)

Ваш ответ на вопрос