2013-02-20 10 views
10

Próbuję dowiedzieć się, jak utworzyć animację klapki między 2 fragmentami.Własna animacja klapki między fragmentami pakietu pomocy technicznej Android

Próbowałem szkolenia CardFlip jako przewodnika, ale nie wydaje się być w stanie go osiągnąć. Korzystam z pakietu pomocy Androida i ustawię animację pośrednią, ale nie uda się.

Jak zaimplementować przerzucanie animacji między fragmentami?

tutaj jest pierwszy 2 xml i utworzony z przewodnika, może można zobaczyć, czy robię coś nie tak. 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

Co nie działa? Czy konkretny kod ulega awarii? Więcej szczegółów. – QVDev

+0

Przede wszystkim @QVDev, nie mogę użyć objectanimator z przewodnika, ponieważ nie jest on dostępny w pakiecie wsparcia dla Androida, więc kod zawiesza się, dopóki nie przełączyłem się na animację pośrednią. a potem nie otrzymuję żadnego efektu klapki. nie jestem pewien, czy to dlatego, że używam tam innego elementu interpolatora; Używam tego androida: interpolator = "@ android: anim/accelerate_decelerate_interpolator", ponieważ muszę obsługiwać do 8 poziomu api, a ten w przewodniku jest dla api 11 wzwyż. – irobotxxx

+0

Więc kiedy zmienisz go na animację, działa poprawnie? Prawdopodobnie jest tak z powodu poziomu API. Może użyć animacji dla starszych api i flipa dla nowszych api? Lub utwórz niestandardową animację klapki – QVDev

Odpowiedz

1

ANDROID propertyName tylko dla ObjectAnimator (+) o strukturze plastra miodu animacji nie zobaczyć animacje pierników. Animacja klapki na karty jest możliwa tylko za pomocą aplikacji animacji Honeycomb. Stworzyłem widelec biblioteki pomocniczej, aby umożliwić używanie animatora apis z NineOldAndroids dla przejść fragmentów. Użyj gałęzi przejściowej animatora mojego github project. Po zmodyfikowaniu biblioteki pomocy spójrz na numer http://developer.android.com/training/animation/cardflip.html, aby utworzyć animator xml.

+0

Cant nawet importuj swój projekt do zaćmienia. Próbuje to zrobić przez kilka godzin (około 4 godzin) z rzędu - bez powodzenia. Za każdym razem, gdy coś jest nie tak lub brakowało w projekcie. Również twój projekt chce ActionBarSherlock, który sam używa support-v4. Czy mógłbyś po prostu dostarczyć skompilowany słoik twojej wersji biblioteki supportv4 (jak w v4/bin)? – Stan

0

Twój xml powinien zawierać wartości wewnątrz znacznika objectAnimator, a nie wewnątrz znaczników alpha i rotate. ObjectAnimator ma propertyName, w którym zostały już określone wartości właściwości.

Powiązane problemy