overridePendingTransition per le attività di scorrimento in entrata e in uscita senza intoppi

Ho difficoltà a capire come far scorrere le attività dentro e fuori con la semplice pressione di un pulsante. Quello che voglio è che l’utente preme un pulsante e poi lo schermo scorre. Il modo in cui lo voglio è per la 1a attività (quella con il pulsante) di scorrere verso sinistra mentre la nuova 2a attività scorre da destra.

Con il codice sottostante, quando si fa clic sul pulsante, la prima attività scorre verso destra quando voglio che si sposti verso sinistra. Poi, quando è fatto scorrere, tutto ciò che rimane è uno schermo nero per una frazione di secondo e poi la seconda attività appare e non scorre.

Quindi la 1a attività sta scivolando fuori dalla direzione sbagliata e l’attività successiva appare semplicemente al posto dello scorrimento. Che cosa sto facendo di sbagliato? Sto avendo difficoltà a capire i file XML, quindi ascolta è il codice per tutto ciò che segue.

1a attività

@Override public void onCreate(Bundle savedInstanceState) { playBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MainMenu.this, Levels.class); startActivity(intent); overridePendingTransition(R.anim.enter_from_right, R.anim.exit_out_left); } }); 

2a attività

 @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.levels); overridePendingTransition(R.anim.enter_from_left, R.anim.exit_out_right); 

Quindi penso che alcuni dei miei file XML potrebbero essere errati. Eccoli.

enter_from_left.xml

      

enter_from_right.xml

      

exit_out_left.xml

      

exit_out_right.xml

      

EDIT Rimuovendo overridePendingTransition() dalla 2a attività lo ha fatto in modo che la prima attività scivoli a sinistra, che è quello che volevo. Ma, quando la prima attività scorre via, sta ancora rivelando uno schermo nero invece di fare in modo che la seconda attività scorra da destra.

Invece di eseguire l’override dell’animazione sia in startActivity() che nelle nuove attività onCreate() , è sufficiente eseguire l’override dell’animazione subito dopo la chiamata startActivity() .

Le due int che fornite overridePendingTransition(int enterAnim, int exitAnim) corrispondono alle due animazioni – rimuovendo la vecchia Activity e aggiungendo quella nuova.

Per la tua seconda domanda, credo che tu abbia sbagliato fromXDelta, -100% dovrebbe essere completamente fuori dal lato sinistro dello schermo, non quello giusto, quindi cambiarlo al 100% dovrebbe risolverlo.

C’è un errore non solo nell’animazione enter_from_right, che dovrebbe avere un fromXDelta del 100% invece di -100%, ma anche nell’animazione enter_from_left, che dovrebbe avere un fromXDelta di -100% anziché del 100%.

Saluti,

Cambia fromXDelta a -100% da enter_from_left e fromXDelta a 100% da enter_from_right nel tuo codice, questo ti darà una corretta animazione scorrevole.

guarda il mio succo, funziona perfettamente:

1.Override di CommonActivity startActivity e finish

  @Override public void startActivity(Intent intent) { super.startActivity(intent); overridePendingTransition(R.anim.from_right_in, R.anim.from_left_out); } @Override public void finish() { super.finish(); overridePendingTransition(R.anim.from_left_in, R.anim.from_right_out); } 

2.from_left_in.xml

      

3.from_right_in.xml

      

4.from_left_out.xml

      

5.from_right_out.xml

     

collegamento gist: https://gist.github.com/JagieChen/f5cc44bf663f3722bd19097be47ccf9b