2014-12-10 7 views
6

ich ein rippleDrawable, dass ich mich für ein Linearlayout als Hintergrund verwenden:Ripple-Effekt tritt nicht auf, wenn auch makeSceneTransitionAnimation mit

<LinearLayout 
    android:id="@+id/card_layout" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentBottom="true" 
    android:clickable="true" 
    android:background="@drawable/ripple" 
    android:orientation="vertical" > 

Ich möchte eine neue Aktivität onClick des Layouts beginnen. Wenn ich nur eine startActivity() mache, funktioniert der Ripple-Effekt gut - man sieht den größten Teil des Ripple-Effekts, dann wird der neue Bildschirm angezeigt.

Wenn ich jedoch die Aktivität mit ActivityOptionsCompat.makeSceneTransitionAnimation starte, tritt der Ripple-Effekt nicht auf, wenn ich auf das Layout klicke. Beachten Sie, dass langes Drücken immer noch die Welligkeit in diesem Fall anzeigt.

Ich habe dies auch auf einer Schaltfläche versucht und das gleiche Ergebnis gesehen.

Es ist also wie makeSceneTransitionAnimation geschieht zu schnell oder überschreiben den Welleneffekt. Ich möchte, dass die Ripple beendet wird oder zumindest etwas davon zu sehen ist, bevor die Szenenübergangsanimation auftritt. Ich bin mir nicht sicher, ob das mit dem Ripple und der Transition, die über den Render-Thread konkurrieren, zu tun hat.

Ich versuchte Aufruf von postponeEnterTransition auf die aufgerufene Aktivität. Aber das hat nicht funktioniert - die angerufene Aktivität wird sofort angezeigt, und dann wird der Übergang verschoben, bis Sie ihn erneut starten.

Wer hat irgendwelche Ideen, was ich falsch machen könnte?

Ich verwende API 21 (keine AppCompat). Vielen Dank im Voraus für jede Hilfe.

+1

Haben Sie es irgendwie geschafft, das zu umgehen? –

+0

@ChristerNordvik Nein, ich habe noch keine Lösung dafür gefunden. – Scott

+0

Ich habe das gleiche Problem mit AppCompat. – sidecarcat

Antwort

4

nicht zu 100% sicher, dass ich Ihre Frage bin zu beantworten, aber ich hatte ein Problem, das mit der ich allmählich ausbreitende Wirkung ähnlich klingt nicht Schlichten, wenn ich eine neue Tätigkeit beginnen, so dass ich am Ende in der OnClickListener einen Handler mit einer Verzögerung auf mit:

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     startActivity(intent); 
    } 
}, 150); 
+0

Danke timothyjc. Ich habe dies mit einer Verzögerung von 150 Versuchen versucht, aber das führt oft zu einem nicht weichen Übergang, man kann deutlich den Stopp nach 150 die meiste Zeit sehen. Es ist jedoch interessant, wenn ich die Verzögerung auf 0 setze, ist der Übergang glatter und ich sehe oft einige oder alle der Welligkeit. Ohne den Handler ist der Übergang glatt, aber ich sehe selten die Welligkeit. – Scott

+0

Ich habe das gleiche Problem – jiawen

+0

Machen Sie es 200 und es funktioniert gut. Vielen Dank! – stef

Verwandte Themen