Android: usando o ObjectAnimator para traduzir uma vista com valores fracionários da dimensão da vista

Parece que as antigas animações de visão (translate, scalee assim por diante) não são mais aceitos peloAnimationInflater, pelo menos como do ICS. Eu li seu código no 4.0.4, e ele espera explicitamente apenas os elementos XMLset, objectAnimator, animator.

Embora a documentação emhttp://developer.android.com/guide/topics/resources/animation-resource.html continua a incluir as animações de exibição, elas parecem estar obsoletas. Tentar usá-los resulta, por exemplo, no errojava.lang.RuntimeException: Unknown animator name: translate.

Como tal, torna-se necessário usar o AndroidObjectAnimator. No entanto, ele não aceita valores fracionais da dimensão associada de si mesmo ou de seu pai (largura paratranslationX, por exemplo) como as animações de visão antigas faziam na forma"75%p".

Construindo oObjectAnimator manualmente em tempo de execução, por buscar o tamanho do fragmento programaticamente, não é viável porque oFragmentTransaction aceita apenas animações declarativas especificadas por um resid.

Meu objetivo é traduzir offscreen um Fragment que esteja preenchendo uma Activity inteira (estou basicamente fazendo uma transição de shift entre dois fragmentos). Este é o existenteTranslationAnimation implementação (slide_in_right.xml, que juntamente com o seu homólogoslide_out_left.xml é por algum motivo não exposto emandroid.R.anime, portanto, tenho que duplicá-los em minha codebase):

<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>

Meu nível de API está definido como 14.

Obrigado!

questionAnswers(5)

yourAnswerToTheQuestion