34

Nella mia app per Android, sto facendo un metodo che pop tutte le attività e portare la prima attività.Transizione di animazione tra le attività utilizzando FLAG_ACTIVITY_CLEAR_TOP

Io uso questo codice:

Intent intent = new Intent(this, MMConnection.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
this.startActivity(intent); 

come ho notato che la transizione era ancora un sinistro all'animazione destra, qualcuno sa se c'è un modo per cambiare l'animazione di sistema all'avvio di un'attività?

In realtà, mi piacerebbe ideale per avere il diritto di passaggio a sinistra (come quando il pulsante di ritorno è sfruttato)

grazie per l'aiuto!

risposta

45

CoolMcGrr è giusto, si desidera utilizzare overridePendingTransition(int enterAnim, int exitAnim).

Per ottenere specificamente la transizione standard "pulsante Indietro", io uso questi come i enterAnim e exitAnim transizioni:

push_right_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_shortAnimTime"/> 
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_shortAnimTime" /> 
</set> 

push_right_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_shortAnimTime"/> 
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="@android:integer/config_shortAnimTime" /> 
</set> 
+1

Sembra essere una risposta migliore per me, dato che E-Riz ha effettivamente risposto alla domanda piuttosto che pubblicare un collegamento come ha fatto CoolMcGrrr. Poi ancora E-Riz è stato 8 mesi dopo per rispondere. – ArtOfWarfare

+0

in seguito, ma è meglio rispondere allo –

+0

Dove chiamereste overridePendingTransition? Prima o dopo l'avvio? – Apqu

5

Il problema si verifica oggigiorno perché pre-ICS e ICS hanno transizioni di attività incorporate diverse. Questo è molto più pulito di definire la propria animazione e SDK indipendente:

Intent intent = new Intent(this, MMConnection.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NO_ANIMATION); 
this.startActivity(intent); 
finish(); 

Verrà avviata l'attività (non ancora visibile) e riprodurre la transizione "finitura di attività" per la nuova attività.

6

Ho usato questo codice:

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 

si possono vedere questi esempi in GmailAnimation o LopeAnimations. Inoltre puoi vedere di più in questo Blog.

Problemi correlati