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
, scale
e 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.anim
e, 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!