Android: Verwenden von ObjectAnimator zum Übersetzen einer Ansicht mit Bruchwerten der Ansichtsdimension

Es scheint, dass die alten Ansichtsanimationen (translate, scaleusw.) werden von der nicht mehr akzeptiertAnimationInflaterZumindest ab ICS. Ich habe seinen Code in 4.0.4 gelesen und er erwartet explizit nur die XML-Elementeset, objectAnimator, animator.

Auch wenn die Dokumentation beihttp://developer.android.com/guide/topics/resources/animation-resource.html enthält weiterhin die Ansichtsanimationen, sie scheinen veraltet zu sein. Der Versuch, sie zu verwenden, führt zum Beispiel zum Fehlerjava.lang.RuntimeException: Unknown animator name: translate.

Als solches wird es notwendig, Android zu verwendenObjectAnimator. Es akzeptiert jedoch keine Bruchwerte der zugehörigen Dimension von sich selbst oder seiner übergeordneten Dimension (Breite fürtranslationXzum Beispiel) wie die alten Ansichtsanimationen in der Form"75%p".

Aufbau derObjectAnimator Manuell zur Laufzeit durch programmgesteuertes Abrufen der Fragmentgröße ist nicht möglich, da dieFragmentTransaction Akzeptiert nur deklarative Animationen, die von einem Resid angegeben werden.

Mein Ziel ist es, ein Fragment, das eine ganze Aktivität ausfüllt, außerhalb des Bildschirms zu übersetzen (ich mache im Grunde einen Übergang zwischen zwei Fragmenten). Das ist das VorhandeneTranslationAnimation Implementierung (slide_in_right.xml, die zusammen mit ihrem Gegenstückslide_out_left.xml ist aus irgendeinem Grund nicht ausgesetztandroid.R.anim, und ich muss sie daher in meiner Codebasis duplizieren):

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

Meine API-Ebene ist auf 14 festgelegt.

Vielen Dank!

Antworten auf die Frage(5)

Ihre Antwort auf die Frage