2014-12-10 9 views
6

Ho un rippleDrawable che sto usando come sfondo per un LinearLayout:effetto a catena non si verificano quando si utilizza anche makeSceneTransitionAnimation

<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" > 

Voglio iniziare una nuova attività onClick del layout. Quando eseguo solo una startActivity(), l'effetto di ripple funziona correttamente: è possibile vedere la maggior parte dell'effetto a catena che si verifica, quindi viene visualizzata la nuova schermata.

Tuttavia, se avvio l'attività utilizzando ActivityOptionsCompat.makeSceneTransitionAnimation, l'effetto di ripple non si verifica quando tocco il layout. Nota, premendo a lungo continua a mostrare il ripple in questo caso.

Ho provato questo anche su un pulsante e ho visto lo stesso risultato.

Quindi è come rendereSceneTransitionAnimazione sta accadendo troppo rapidamente, o ignorare l'effetto a catena. Mi piacerebbe che l'ondulazione finisse o almeno ne vedessi almeno una prima che avvenga l'animazione della transizione della scena. Non sono sicuro se questo ha a che fare con il ripple e la transizione in competizione sul thread di rendering?

Ho provato a chiamare postponeEnterTransition sull'attività chiamata. Ma questo non ha funzionato - l'attività chiamata continua a essere visualizzata immediatamente, quindi la transizione viene posticipata fino a quando non viene riavviata.

Qualcuno ha qualche idea su cosa potrei fare male?

Sto utilizzando l'API 21 (senza AppCompat). Grazie in anticipo per qualsiasi aiuto.

+1

Sei riuscito a risolvere questo problema in qualche modo? –

+0

@ChristerNordvik No, non ho ancora trovato una soluzione per questo. – Scott

+0

Ho lo stesso problema con AppCompat. – sidecarcat

risposta

4

non al 100% sicuro che sto rispondere alla tua domanda, ma ho avuto un problema che suona simile con l'effetto complessivo non finire quando inizio una nuova attività, quindi ho finito per usare un gestore con un ritardo nella OnClickListener:

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

Grazie timothyjc. Ho fatto un tentativo con un ritardo di 150, ma questo spesso porta a una transizione non liscia, è possibile vedere chiaramente la fermata dopo 150 la maggior parte del tempo. È interessante però, quando imposto il ritardo su 0, la transizione è più fluida e spesso vedo alcuni o tutti i ripple. Senza il gestore, la transizione è scorrevole ma raramente vedo il ripple. – Scott

+0

Sto avendo lo stesso problema – jiawen

+0

Rendilo 200 e funziona bene. Grazie! – stef

Problemi correlati