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.
Спасибо!