2010-04-12 11 views
37

Ich versuche eine Aktivität mit einer benutzerdefinierten Übergangsanimation zu starten. Die einzige Möglichkeit, dies zu tun (ohne onPendingTransition() in der vorherigen Aktivität zu verwenden), besteht darin, ein benutzerdefiniertes Design für die Aktivität zu verwenden und entweder activityOpenEnterAnimation, taskOpenEnterAnimation, windowEnterAnimation oder windowAnimationStyle zu definieren. Aber keines dieser Attribute funktioniert für mich. Einige Experimente ergaben die folgenden ergebnis-Starten der Aktivität mit einer Animation

Wenn ich das windowAnimationStyle Attribut zu einem gewissen benutzerdefinierten Stil gesetzt, die Werte für activityOpenEnterAnimation, taskOpenEnterAnimation, windowEnterAnimation oder windowAnimationStyle definiert, kann ich von der Standard-Übergangsanimation loswerden zu Beginn der Tätigkeit auftritt. Die Übergangsanimation wird nicht mit dem angegebenen tatsächlichen Wert angezeigt, aber die Standardanimation wird nicht angezeigt.

Nach der Referenz doc here,

soll ich in der Lage sein, eine Animation zu Beginn der Aktivität activityOpenEnterAnimation mit zu definieren. Aber bisher kein Erfolg.

Irgendwelche Ideen?

+0

Diese Frage wurde für ** Android 2.1 (Eclair) ** gestellt. Ich weiß nicht, ob das Problem auch auftritt oder sogar relevant ist für die späteren Versionen nämlich Froyo/Honeycomb. Ich habe keine Möglichkeit, das herauszufinden. – adityad

Antwort

78

Ich benutze dies in einem aktuellen Projekt von mir, es ist im Grunde ziemlich einfach. Sie definieren einen neuen Animationsstil in Ihrem styles.xml, wie folgt aus:

<!-- just defines top layer "Animation" --> 
<style name="Animation" /> 

<!-- the animations must have been defined in your "anim" folder, of course --> 
<style name="Animation.MyAwesomeAnimation" parent="android:style/Animation.Activity"> 
    <item name="android:activityOpenEnterAnimation">@anim/myawesomeanimation_enter</item> 
    <item name="android:activityOpenExitAnimation">@anim/hold_long</item> 
    <item name="android:activityCloseEnterAnimation">@anim/hold_long</item> 
    <item name="android:activityCloseExitAnimation">@anim/myawesomeanimation_exit</item> 
</style> 

Dann diesen Stil festgelegt in einem Thema (themes.xml):

<style name="Theme.MyAwesomeTheme" parent="Theme.Default"> 
    <item name="android:windowAnimationStyle">@style/Animation.MyAwesomeAnimation</item> 
</style> 

Und dann können Sie einfach diese Themen gesetzt auf jede Aktivität, die Sie in Ihrer AndroidManifest.xml mögen:

<activity 
    android:name=".MyAwesomeActivity" 
    android:theme="@style/Theme.MyAwesomeTheme" /> 

Jetzt großen Spaß mit Aktivität Animationen wünsche ich Ihnen! :-D

+25

Nach 4 Stunden des Experimentierens habe ich eine tolle Information für alle !: Es ist wirklich wichtig, die Animationen für dein Handy zu aktivieren: Einstellungen-> Anzeige-> Animation und wähle "alle Animationen"! – Informatic0re

+24

Nach meiner Erfahrung sollte man auch von den Standardanimationen ableiten: '