Похоже, что старые анимации просмотра (translate
, scale
и т.д.) больше не принимаются AnimationInflater
, по крайней мере, с ICS. Я прочитал его код в 4.0.4, и он явно ожидает только элементы XML set
, objectAnimator
, animator
.
Несмотря на то, что документация на http://developer.android.com/guide/topics/resources/animation-resource.html продолжает включать анимацию вида, они выглядят устаревшими. Попытка использовать их приводит, например, к ошибке java.lang.RuntimeException: Unknown animator name: translate
.
Таким образом, становится необходимо использовать Android objectAnimator
. Тем не менее, он не принимает дробные значения связанного измерения самого себя или своего родителя (например, ширина для 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.
Спасибо!