2016-07-19 12 views
1

Ich versuche, die hier gefundene Animation zu erreichen.Android Fragment Transaktion benutzerdefinierte Animation

Android 3d animation like Google Now Launcher Menu Animation

aber es sieht aus wie ich nicht den objectAnimator verwenden kann, weil ich die Support Library Fragmente bin mit. Als ich versuchte, den Code unter dem obigen Link zu verwenden, wurde ein Fehler angezeigt, der besagt, dass Unknown animation: objectAnimator.

Wie kann ich beim Hinzufügen/Entfernen von Fragmenten eine Animation wie diese durchführen, während ich noch die Support-Bibliothek für Fragmente verwende?

UPDATE

Gemäß der Antwort von Deev unten habe ich die XML-Animationen für den Rest aktualisiert.

gla_back_come.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500"> 

    <alpha 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" /> 

    <scale 
     android:fromXScale="1" 
     android:toXScale="0" 
     android:fromYScale="1" 
     android:toYScale="0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator" /> 

</set> 

gla_back_gone.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" > 

    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" /> 

    <scale 
     android:fromXScale="12.0" 
     android:toXScale="1.0" 
     android:fromYScale="12.0" 
     android:toYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 

</set> 

gla_there_come.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500"> 

    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" /> 

    <scale 
     android:fromXScale="0.0" 
     android:toXScale="1.0" 
     android:fromYScale="0.0" 
     android:toYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 

</set> 

gla_there_gone.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" > 

    <alpha 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0"/> 

    <scale 
     android:fromXScale="1.0" 
     android:toXScale="12.0" 
     android:fromYScale="1.0" 
     android:toYScale="12.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 

</set> 
+0

Es ist eine Weile her, dass ich grundlegende Animationen verwendet haben, aber ich glaube, die Interpolatoren vom getroffen werden müssen „@android: anim /“ Ordner und sie sind alle nachfixiert mit „_interpolator ". Sie sind im Wesentlichen die gleichen Dinge, aber sie können bei jüngeren Geräten nicht am Standort "@android: interpolator /" existieren. Ich habe meine Antwort mit dem 'accelarate_decelerate_interpolator' editiert. – DeeV

+0

@DeeV - danke! Ich aktualisiere mein XML oben, um übereinzustimmen. – Phil

+0

@DeeV - Können Sie meine aktualisierte XML für die Animationen gla_back_gone und gla_back_come überprüfen? Sie scheinen nicht zu tun, was das Video-Beispiel getan hat. Ich denke, dass ich etwas falsch gemacht habe – Phil

Antwort

2

Sie würden die ObjectAnimator mit dem klassischen Animation ersetzen. Sie können auf die gleiche Art und Weise erstellt werden. Anstatt die XML-Dateien in das Ressourcenverzeichnis animator zu schreiben, würden Sie sie in das Ressourcenverzeichnis anim einfügen. Die Animationen selbst in der XML-Datei sind genauer benannt. Stattdessen Eigenschaften der Namensgebung aus, nennen Sie die Animation, die Sie ausführen möchten:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@[package:]anim/interpolator_resource" 
    android:shareInterpolator=["true" | "false"] > 
    <alpha 
     android:fromAlpha="float" 
     android:toAlpha="float" /> 
    <scale 
     android:fromXScale="float" 
     android:toXScale="float" 
     android:fromYScale="float" 
     android:toYScale="float" 
     android:pivotX="float" 
     android:pivotY="float" /> 
    <translate 
     android:fromXDelta="float" 
     android:toXDelta="float" 
     android:fromYDelta="float" 
     android:toYDelta="float" /> 
    <rotate 
     android:fromDegrees="float" 
     android:toDegrees="float" 
     android:pivotX="float" 
     android:pivotY="float" /> 
    <set> 
     ... 
    </set> 
</set> 

So zum Beispiel in der Antwort, die Sie geschrieben, die „gla_there_come.xml“ würde von diesem gehen:

<set xmlns:android="http://schemas.android.com/apk/res/android" > 

    <objectAnimator 
    android:duration="500" 
    android:propertyName="alpha" 
    android:valueFrom="0.0" 
    android:valueTo="1.0" /> 
    <objectAnimator 
    android:duration="500" 
    android:interpolator="@android:interpolator/accelerate_decelerate" 
    android:propertyName="scaleY" 
    android:valueFrom="0" 
    android:valueTo="1" /> 
    <objectAnimator 
    android:duration="500" 
    android:interpolator="@android:interpolator/accelerate_decelerate" 
    android:propertyName="scaleX" 
    android:valueFrom="0" 
    android:valueTo="1" /> 

</set> 

zu dies:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    duration="500"> 

    <alpha 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" /> 

    <scale 
    android:fromXScale="0.0" 
    android:toXScale="1.0" 
    android:fromYScale="0.0" 
    android:toYScale="1.0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 

</set> 
+0

danke! Wenn Sie eine Minute haben und die Konvertierung für die anderen hinzufügen können, wäre das großartig! Wenn nicht, keine Sorgen. – Phil

Verwandte Themen