2013-02-26 14 views
10

Co próbuję osiągnąć, to: rozpocząć nową aktywność z animacją przejścia dla kończącej się działalności tylko.Aktywacja Android Animacja przejścia

Chciałbym przesunąć bieżącą działalność, w której nowa działalność znajdzie się za bieżącą.

Oto slajd się animacja: R.layout.slide_up

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

    <translate 
     android:duration="1000" 
     android:fromYDelta="0%" 
     android:toYDelta="100%" /> 

</set> 

Oto jak ja stosowania przejścia animacji działalność:

overridePendingTransition (0 , R.anim.slide_up); 

I używam 0 dla czynności wprowadzania, ponieważ nie chcę żadnej animacji dla nowej aktywność i nie działa (animacja nie jest wykonywana). Jeśli używam animacji wprowadzania aktywność też, że działa (zarówno animacje są wykonywane), takie jak:

overridePendingTransition (R.anim.slide_out , R.anim.slide_up); 

gdzie R.anim.slide_out:

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

    <translate 
     android:duration="1000" 
     android:fromYDelta="100%" 
     android:toYDelta="0%" /> 

</set> 

Wszelkie pomysły?

Ja pracuje na Androidzie 4.1.2 i Android 4.0.4

Odpowiedz

12

Alter animacji wyjścia tak, że świadczy ponad szczycie aktywności wejściem.

R.anim.slide_up

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

    <translate 
     android:duration="1000" 
     android:fromYDelta="0%" 
     android:toYDelta="100%" /> 

</set> 

Następnie można zrobić tego, czego pierwotnie robi ustawić animację.

overridePendingTransition (0 , R.anim.slide_up); 
3

Mam dokładnie to samo przejście i takie animacja działa dla mnie:

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/accelerate_interpolator" 
android:fromYDelta="0%" android:toYDelta="100%" android:zAdjustment="top" 
android:duration="300" /> 
+1

To dlatego, że nie jest to dokładnie to samo przejście. Masz zestaw właściwości zAdjustment = "top", który pozwala na wyjście animacji do góry nad animacją wprowadzającą, ponieważ domyślnie animacja wprowadzania odtwarza nad wyjściem. – MCeley

+0

o to chodzi :) – Zielony

1

Użyj poniższego wiersz po startActivity

overridePendingTransition(0,0); 

To przesłonić animację domyślną i zrobić bez animacji . Można również przekazać niektóre niestandardowe animacje, jeśli chcesz

overridePendingTransition(R.anim.animation1,R.anim.animation2); 
0

Gdziekolwiek jesteś wywołanie zamiar rozpocząć działalność, trzeba zmodyfikować intencję. ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this); startActivity(intent, options.toBundle());

Jeśli masz jakiś specjalny sposób do setupTransitions() można umieścić dwie kolejne linie kodu tam, inny może umieścić je w onCreate()

getWindow().setEnterTransition(new Slide(Gravity.RIGHT).setDuration(800)); 

Grawitacji.PRAWY określa, od którego kierunku należy rozpocząć następną czynność. Metoda setDuration() jest opcjonalna, dla płynniejszego przejścia użyłem go, nie musisz.

Odkryj więcej, bawiąc się z różnymi właściwościami Gravity i setDuration.

Powiązane problemy