2013-02-20 8 views
10

Sto cercando di scoprire come creare l'animazione di flip tra 2 frammenti.Animazione di flip personalizzato tra i frammenti pacchetto di supporto Android

Ho provato l'allenamento CardFlip come guida, ma non sembra di essere in grado di raggiungerlo. Sto usando il pacchetto di supporto Android e lo ho impostato per l'animazione interpolazione, ma non ha avuto successo.

Come implementare le animazioni capovolte tra i frammenti?

ecco i primi 2 xml che ho creato dalla guida, forse potresti vedere se sto facendo qualcosa di sbagliato. screen_flip_left_in.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" > 

    <!-- Before rotating, immediately set the alpha to 0. --> 
    <alpha 
     android:valueFrom="1.0" 
     android:valueTo="0.0" 
     android:propertyName="alpha" 
     android:duration="0" /> 

    <!-- Rotate. --> 
    <rotate 
     android:valueFrom="-180" 
     android:valueTo="0" 
     android:propertyName="rotationY" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
     android:duration="@integer/card_flip_time_full"/> 

    <!-- Half-way through the rotation (see startOffset), set the alpha to 1. --> 
    <alpha 
     android:valueFrom="0.0" 
     android:valueTo="1.0" 
     android:propertyName="alpha" 
     android:startOffset="@integer/card_flip_time_half" 
     android:duration="1" /> 
</set> 

screen_flip_left_out.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" > 
     <!-- Rotate. --> 
    <rotate 
     android:valueFrom="0" 
     android:valueTo="180" 
     android:propertyName="rotationY" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
     android:duration="@integer/card_flip_time_full" /> 

    <!-- Half-way through the rotation (see startOffset), set the alpha to 0. --> 
    <alpha 
     android:valueFrom="1.0" 
     android:valueTo="0.0" 
     android:propertyName="alpha" 
     android:startOffset="@integer/card_flip_time_half" 
     android:duration="1" /> 

</set> 
+0

Che cosa non funziona? si sta verificando un arresto anomalo del codice specifico? Maggiori dettagli per favore – QVDev

+0

@QVDev prima di tutto, non posso usare l'objectanimator dalla guida perché non è disponibile nel pacchetto di supporto Android, quindi il codice si arresta in modo anomalo finché non si passa all'animazione di interpolazione. e quindi, non ho alcun effetto di vibrazione. non sono sicuro che sia perché utilizzo un elemento interpolatore diverso; io uso questo android: interpolator = "@ android: anim/accelerate_decelerate_interpolator" perché ho bisogno di supportare fino a API a livello 8 e quello nella guida è per API 11 verso l'alto. – irobotxxx

+0

Quindi quando lo si cambia in tween funziona bene? Questo è probabilmente dovuto al livello API. Magari usi l'interpolazione per le vecchie API e flip per le nuove API? Oppure creare un'animazione di flip personalizzata – QVDev

risposta

1

android: propertyName solo per ObjectAnimator (Honeycomb +) animazioni, non visualizzare animazioni da Gingerbread. Un'animazione per capovolgere le carte è possibile solo utilizzando le API di animatori Honeycomb. Ho creato un fork della libreria di supporto per consentire l'utilizzo di apis Animator da NineOldAndroids per le transizioni di frammento. Utilizza il ramo di transizione animatore del mio github project. Una volta che hai modificato la libreria di supporto, consulta http://developer.android.com/training/animation/cardflip.html per creare l'animatore xml.

+0

Non riesci nemmeno a importare il tuo progetto in eclissi. Cercando di farlo per diverse ore (circa 4 ore) di fila - senza fortuna. Ogni volta che qualcosa è sbagliato o mancato nel progetto. Anche il tuo progetto vuole ActionBarSherlock che usa il supporto-v4 da solo. Potresti semplicemente fornire un jar compilato della tua versione di supportv4 lib (come in v4/bin)? – Stan

0

L'xml deve contenere valori all'interno del tag objectAnimator, non all'interno di alfa e ruotare i tag. L'oggettoAnimatore ha propertyName in cui sono già stati specificati i valori delle proprietà.

Problemi correlati