2013-12-23 5 views
11

Ich versuche, einen Übergang in meiner App zu implementieren, aber overridePendingTransition (Anim, Anim) funktioniert nicht richtig.overridePendingTransition funktioniert nicht

  • Ich habe Fenster Übergänge aktiviert
  • Nach dem Debuggen von Code kann ich sagen, dass der Compiler den Aufruf ausführt, aber es ist nicht gezeigt
  • Ich habe versucht Aufruf finish() vor overridePendingTransition() dies nicht scheint eine Wirkung

Mein Code ist einfach und Standard zu haben:

Starten des Vorsatzes und der Aufruf overridePendingTransition:

Die Startanimation sollte nichts tun, nur die Fade-Animation sollte Wirkung haben.

slide_no_move XML:

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:fromYDelta="0%p" android:toYDelta="0%p" 
android:duration="500"/> 

verblassen XML:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:fillAfter="true"> 
<alpha android:fromAlpha="1.0" 
     android:toAlpha="0.0" 
     android:duration="500"/> 
</set> 

EDIT: Ich habe vergessen, die Tatsache zu erwähnen, dass die Aktivitäten, die ich alle erweitern die 'Haupt' Aktivität starten. Könnte dies die Tatsache sein, die das Problem verursacht?

Antwort

3

Ich weiß, das ist eine alte Post, aber ich sah es und fühlte mich verpflichtet, sie zu beantworten:

Es war ein sehr obskures Problem, und es wurde Gerät verwendet. Ich habe damals einen iOcean X7 benutzt. Später fand ich heraus, dass dieses Telefon keine Animationen abspielen konnte. Für einige hat es keine Animationen auf irgendeiner App gespielt.

22

Versuchen Sie, die pendingTransition nach dem Aufruf finish(), so zu nennen:

Intent newsIntent = new Intent(ZPFActivity.this, More2013Activity.class); 
startActivity(newsIntent); 
finish(); 
overridePendingTransition(R.anim.slide_no_move, R.anim.fade); 
+0

Ich sollte zu meiner Frage hinzugefügt haben, dass ich das bereits versucht habe. –

+0

Keine Probleme. Ich weiß nicht, warum es dann nicht funktioniert, sorry :( –

+0

danke, dass funktioniert –

11

Versuchen Sie dies mit:

public class More2013Activity extends Activity{ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      overridePendingTransition(R.anim. slide_no_move, R.anim.fade_in); 
      setContentView(R.layout.more_activity) 
     } 
    } 

anstelle des Codes.

+0

Nur versucht, aber es hat nicht funktioniert. Bitte überprüfen Sie meine Bearbeitung Ich vergaß zu erwähnen, dass alle Aktivitäten die "Haupt" -Aktivität implementieren. –

+0

können Sie testen, indem Sie Ihre 'More2013Activity' erweitern, um' Activity', nicht Ihre wichtigste, um zu sehen, ob das das Problem ist. – hardartcore

0

überprüfen Sie, ob sich das Gerät im Energiesparmodus befindet. Im Energiesparmodus funktionieren Animationen nicht.

+3

Dies stellt keine Antwort auf die Frage.Für Kritik oder Anfrage Klärung von einem Autor, hinterlassen Sie einen Kommentar – Vality

+1

Ich hatte das gleiche Problem, ich habe viele Male nach dieser Frage gesucht, aber ich habe nicht überprüft, ob mein Telefon im Energiesparmodus ist, im Energiesparmodus overridePendingTransition wird nicht funktionieren, ich habe den Modus auf normal geändert, jetzt funktioniert es, –

19

Wenn Sie den USB-Debugging-Modus aktivieren, können die Übergangseffekte deaktiviert werden. Geben Sie die Entwickleroptionen ein (wo Sie den Debugging-Modus aktiviert haben), suchen Sie den Benutzerschnittstellenbereich und überprüfen Sie, ob die Animationsskala der Animationen deaktiviert ist. Wenn ja, setze es auf .5x. Erledigt!

+0

vielen dank, das hat funktioniert, obwohl es zunächst eine seltsame lösuo zu sein schien n –

6

Gehen Sie in Ihrem Gerät Entwickleroptionen, gibt es drei weitere Optionen Fenster Animationsskala, Transition Animation Skala und Animation Dauerskala. Stellen Sie sicher, dass alle nicht ausgeschaltet sind. Dies ist einer der Gründe, warum ich darauf gestoßen bin.

+0

Dieser Beitrag wurde bereits beantwortet. Ich hatte bereits festgestellt, dass diese eingeschaltet waren. Es war ein gerätespezifisches Problem. –

+0

@Tim Kranen, Es ist nicht gerätespezifisches Problem für Ihre freundlichen Informationen. Verpassen Sie nicht, andere zu führen. Es ist nicht mein Fehler, wenn du eine falsche Antwort gefunden hast. – user1154390

+0

Aber dieses Problem war gerätespezifisch. Ich habe deine Lösung auch versucht, es hat nicht geholfen. Das Gerät hat diese Animationen einfach nicht unterstützt. –

1

Wahrscheinlich Sie verwenden overridePendingTransition (anim, anim) in Ihrem onPause() zu Verfahren. Ich hatte das gleiche Problem, aber ich löse es durch einen kleinen Trick.

1: Definieren Sie einen boolean in der Klasse vor onCreate() Methode

private boolean trans=true; 

@Override 
protected void onCreate(Bundle savedInstanceState) {... 

2: Setzen Sie trans = false;, wenn Sie Sie startActivity verwenden

Intent newsIntent = newIntent(ZPFActivity.this,More2013Activity.class);   
trans = false;   
startActivity(newsIntent);   
overridePendingTransition(R.anim.slide_no_move, R.anim.fade); 

3: Und in Ihrem onPause() Methode tun dies

@Override 
protected void onPause() { 
    if (trans) { 
     overridePendingTransition(R.anim.slide_no_move, R.anim.fade); 
    } 
    super.onPause(); 
} 

4: Und in Ihrem onResume() Methode tun, um diese

@Override 
protected void onResume() { 
    super.onResume(); 
    trans=true; 
} 
8

Wenn Sie Android-Version> 21 verwenden, dann machen Sie die android: windowA ctivityTransitions Attribut zu true in der style.xml Datei in der Werte-v21 Ordner wie folgt.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

     <item name="android:windowActivityTransitions">true</item> 

    </style> 
+1

Danke, du hast meinen Tag gerettet! –

Verwandte Themen