Domanda

Qual è il modo migliore per andare a una nuova attività, ma far sembrare che le diapositive di attività a sinistra e la nuova attività entra nello schermo? Sto usando intenti a chiamare la nuova attività, è che il modo per farlo se voglio l'applicazione per essere leggero?

Per spiegare un po 'meglio: sul mio telefono Android posso strisciare la vista con l'altrove a casa a destra e poi entra in un flusso amico da sinistra e si svolge sullo schermo. Voglio farlo nel mio app con buttonclicks, è il "scivolamento" io sono dopo. THanks!

È stato utile?

Soluzione

Nel sistema operativo Android 2.1 o versione successiva Penso che si possa utilizzare il OverridePendingTransition () metodo per fornire il tipo di transizione tra attività animazioni che stai cercando.

In primo luogo, definire un paio di risorse di animazione in / res / anim / . Qui è uno che è denominato right_slide_out.xml :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <translate
        android:fromXDelta="0"
        android:toXDelta="100%p"
        android:duration="500"
    />
</set>

Un altro chiamato right_slide_in.xml :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <translate
        android:fromXDelta="100%p"
        android:toXDelta="0"
        android:duration="700"
    />
</set>

Poi, quando si avvia la nuova attività, utilizzare il metodo OverridePendingTransition come in:

startActivity(intent);
overridePendingTransition  (R.anim.right_slide_in, R.anim.right_slide_out);

Questo dovrebbe gestire le animazioni di transizione per avviare l'attività.

Per la retromarcia, quando che termina di attività e tu sei a tornare a quella originale, è un po 'più di nebbia.

Se avete qualche controllo dell'interfaccia utente che finisce che l'attività e chiamate Activity.finish (), allora si può solo aggiungere l'overridePendingTransition () subito dopo.

Per gestire il caso in cui l'utente termina l'attività premendo il tasto back, uso qualcosa di simile a quanto segue:

@Override
public void onBackPressed() 
{

    this.finish();
    overridePendingTransition  (R.anim.right_slide_in, R.anim.right_slide_out);
}

Altri suggerimenti

È possibile utilizzare un left_slide_out.xml (basta cambiare il toXDelta in right_slide_out.xml di Josh a leggere -100% p), per rendere l'antica attività scompaiono a sinistra (e hanno anche la stessa durata su entrambe le animazioni) .

Sì, l'utilizzo degli intenti è il modo standard per iniziare un'altra attività, e di solito fa la cosa scorrevole si parla. per esempio. startActivity (new Intent (questo, myNextActivity.class)); lo farà.

JEMS è corretta. Per impostazione predefinita, si otterrà un un'animazione scorrevole quando si lancia un nuovo intento.

Se siete alla ricerca di un'animazione personalizzata di più, è possibile utilizzare overridePendingTransition . Tenete a mente che è stata aggiunta nel API Level 5. Vedere questo API demo per l'utilizzo del campione.

C'è un po 'di confusione su ciò che l'entrare e animazioni di uscita sono. Per coloro che stanno ancora riflettendo su di esso, qui è un modello ..

overridePendingTransition(
    enterAnimationForCalledActivity, 
    exitAnimationForCallingActivity
);

Questo dovrebbe probabilmente pulire l'aria un po '.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top