5

Android-Übergang ist das gleiche für explodieren und slide.Actually ich glaube nicht, dass es animiert. Auch die Dauer beträgt nicht 6 Sekunden. Wie kann ich es reparieren?Android-Übergangsanimation funktioniert nicht

Code entnommen aus here.

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); 

     Transition ts = new Slide(); //Slide(); //Explode(); 

     ts.setDuration(6000); 
     getWindow().setEnterTransition(ts); 
     getWindow().setExitTransition(ts); 
     setContentView(R.layout.activity_main_activity); 



    } 




    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     finishAfterTransition(); 
    } 

Style-v21.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="BaseAppTheme" parent="android:Theme.Material.Light"> 
     <item name="android:colorControlHighlight">#0000AA</item> 
     <item name="android:navigationBarColor">#0000AA</item> 
     <item name="android:colorPrimaryDark">#0000AA</item> 
     <item name="android:colorPrimary">#0000FF</item> 
     <item name="android:colorAccent">#00FF00</item> 
     <item name="android:windowBackground">@android:color/black</item> 
     <item name="android:textColorPrimary">@android:color/white</item> 

     <item name="android:windowContentTransitions">true</item> 
     <item name="android:windowAllowEnterTransitionOverlap">true</item> 

     <!-- specify enter and exit transitions --> 
     <item name="android:windowEnterTransition">@transition/explode</item> 
     <item name="android:windowExitTransition">@transition/explode</item> 
    </style> 
</resources> 
+0

Ich habe dieses Problem auch! Auch wenn die angenommene Antwort das Problem löst, würde ich gerne wissen, warum Ihr Code nicht funktioniert. – nilsi

+0

Wurde dieses Problem jemals gelöst? Ich habe ein ähnliches Problem. – Brian

Antwort

1

Hiermit können Sie eine neue Aktivität mit Übergang beginnen

startActivity(new Intent(this, NewActivity.class)); 
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); 

Datei res erstellen/Anim/slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false" > 
    <translate android:duration="1000" android:fromXDelta="100%" android:toXDelta="0%" /> 
    <alpha android:duration="1000" android:fromAlpha="0.0" android:toAlpha="1.0" /> 
</set> 

Erstellen Sie die Datei res/anim/slide_ou t_left.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false" > 
    <translate android:duration="2000" android:fromXDelta="0%" android:toXDelta="-100%"/> 
    <alpha android:duration="2000" android:fromAlpha="1.0" android:toAlpha="0.0" /> 
</set> 
+0

Was macht die 'setExitTransition (ts)', wenn Sie beim Ändern von Aktivitäten immer noch explizit auf die XML-Datei verweisen müssen? Ich folge [dies] (https://github.com/lgvalle/Material-Animations), und es scheint zu sagen, dass Sie den Übergang nur in Java einrichten können. Missverständnis ich? – Caketray

+7

Dies ist eine schlechte Antwort, die nicht die neuere Transitions-API verwendet (die in der Frage verwendete API und die API der nächsten Generation für alle zukünftigen Aktivitätsübergänge). – Brian

+1

dies ist nicht die antwort für gegebene frage – abh22ishek

3

Vergessen Sie nicht das Thema für die Aktivität oder das gesamte Paket in Ihrem AndroidManifest.xml anzuwenden.

9

In meinem eigenen Fall war Transition Animation in den Entwickleroptionen meines Android-Geräts aus irgendeinem Grund deaktiviert. gehen

einfach auf Einstellungen -> Entwickleroptionen -> Transition Animation Skala: auf Maßstab für Animation 1x

+0

jemand geben diesem kerl eine medaille und donut !! –

4

Ich fand heraus, dass ich wirklich tun müssen, um

ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, test, "transition_name"); 
ActivityCompat.startActivity(TourAndLoginActivity.this, new Intent(TourAndLoginActivity.this, LoginActivity.class), activityOptionsCompat.toBundle()); 

Noch rätselhaft , aber ich weiß nicht, warum wir ein gemeinsames Objekt haben müssen, um den Übergang zu erhalten. Wenn ich null anstelle von ActivityOptionsCompat gebe, gibt es keinen Übergang

+0

Was passierst du für deine Testansicht, wenn du aktiv bist oder in einem Fragment bist? – Sniper

+1

@Sniper Ich verpasste einen Builder, ohne die Ansichten zu wechseln, worauf ich in einer anderen Frage hingewiesen wurde: ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation (TourAndLoginActivity.this); ist genug – Boy

+0

aha Ich sehe Ihren Punkt, danke darüber, aber ActivityOptionsCompat ist obligatorisch, diese neuen Übergänge zu haben – Sniper