2016-01-28 31 views
9

Sto tentando di implementare Transizioni attività ma non riesco a vedere gli effetti. Ecco il codice per la mia prima attività:Transizioni attività non funzionanti

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_architecture); 
     setUpWindowAnimations(); 
    } 

private void setUpWindowAnimations() { 
     if (android.os.Build.VERSION.SDK_INT >= 21) { 
      Log.i("ANIM", "Fade called"); 
      Fade fade = new Fade(2); 
      fade.setDuration(3000); 
      getWindow().setExitTransition(fade); 
     } 
    } 

Qui è il codice per la seconda attività:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_image); 
     setUpWindowAnimations(); 
    } 

private void setUpWindowAnimations() { 
     if (android.os.Build.VERSION.SDK_INT >= 21) { 
      Log.i("ANIM", "slide called"); 
      Slide slide = new Slide(Gravity.LEFT); 
      slide.setDuration(3000); 
      getWindow().setEnterTransition(slide); 
     } 
    } 

Anche se ho impostato Dissolvenza animazione, non v'è alcun sbiadimento, anche, Scivolo lavora in modo predefinito, ovvero la direzione è BOTTOM invece di SINISTRA.

Here è il mio values/style.xml e here è il mio v21/styles.xml.

Ecco il mio AndroidManifest.xml:

<application 
     android:name=".MyApplication" 
     android:allowBackup="true" 
     android:hardwareAccelerated="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:largeHeap="true" 
     android:theme="@style/AppTheme"> 

Perché sono queste transizioni non funziona e come farli funzionare. Ho usato paste.ubuntu.com perché l'editor SO non mostrava correttamente xml.

+0

Hai definito uno stile in 'styles.xml' con la tua transizione personalizzata? –

+0

@IgorGanapolsky No, non l'ho fatto. Puoi controllare entrambi i miei 'styles.xml', ho messo un link. –

+0

Il collegamento paste.ubuntu che hai inserito non funziona. –

risposta

2

Declare setUpWindowAnimations(); prima dello setContentView.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setUpWindowAnimations(); 
     setContentView(R.layout.activity_architecture); 

    } 

private void setUpWindowAnimations() { 
     if (android.os.Build.VERSION.SDK_INT >= 21) { 
      Log.i("ANIM", "Fade called"); 
      Fade fade = new Fade(2); 
      fade.setDuration(3000); 
      getWindow().setExitTransition(fade); 
     } 
    } 

Altro Solution

fare una xmlTransition e mettere questo codice XML ci

<?xml version="1.0" encoding="utf-8"?> 
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="1000" 
    android:interpolator="@android:interpolator/accelerate_decelerate"> 
    <fade android:fadingMode="fade_out"/> 
    <slide android:slideEdge="bottom"/> 
</transitionSet> 

Questo dovrebbe essere il vostro stile per Api21

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
     <item name="android:windowContentTransitions">true</item> 
     <item name="android:windowTransitionBackgroundFadeDuration">1000</item> 
    </style> 
</resources> 

Poi inserire questo codice in la tua attività prima re setCreateView

if (Build.VERSION.SDK_INT >= 21) { 

      TransitionInflater inflater = TransitionInflater.from(this); 
      Transition transition = inflater.inflateTransition(R.transition.transition_a); 
      getWindow().setExitTransition(transition); 
     } 

questo dovrebbe essere nel vostro altre attività prima setCreateView

if(Build.VERSION.SDK_INT >= 21){ 
      Slide slide = new Slide(); 
      slide.setDuration(1000); 
      getWindow().setEnterTransition(slide); 
     } 
+0

Questo non funziona. Nessun cambiamento si è verificato. –

+0

risposta aggiornata. Fammi sapere se funziona –

+1

anche non funziona. Ho cambiato la direzione della diapositiva a sinistra e continua a scorrere dal basso. –

30
Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this).toBundle(); 
this.startActivity(intent,bundle); 

Aggiungere queste due righe dopo si imposta l'intenti tra due attività questo funzionerà.

Non è possibile avviare un'attività tramite il metodo startActivity(intent) , è necessario specificare le transizioni tra le attività utilizzando i pacchetti.

+0

Questa dovrebbe essere la risposta accettata! –

Problemi correlati