14

Ho creato un'app molto semplice che utilizza le transizioni di elementi condivise all'avvio di un'attività con il tema della finestra di dialogo (source code on github).Transizione elemento condiviso con Attività di dialogo

ho ottenuto il seguente risultato:

sample app

Come potete vedere ci sono 2 problemi con la transizione/animazione:

  1. L'animazione è visibile solo nella zona della finestra di dialogo attività in modo che clip e sembra brutto.
  2. Nessuna transizione/animazione quando tocco fuori dall'attività su tornare indietro.

Come posso risolvere questi problemi? Qualsiasi aiuto sarebbe apprezzato.

EDIT: Dopo la risposta di Quanturium ho fatto le seguenti cose per farlo funzionare:

Utilizza il seguente tema, invece di un tema di dialogo:

<style name="AppTheme.Transparent" parent="AppTheme"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:backgroundDimEnabled">true</item> 
</style> 

Utilizzare un CardView come sfondo per il dialogo look e per angoli arrotondati e ombre.

Call finishAfterTransition(); quando l'utente tocca fuori dal CardView.

ora sembra che questo (code), il CardView ha bisogno di raffinazione per adattarsi meglio la finestra di dialogo, ma che sta funzionando almeno .:

working

+0

http://stackoverflow.com/questions/17542517/activity-with-transparent-background/39403147#39403147 Potrebbe esserti d'aiuto. – boiledwater

+0

Grazie per il tuo repository Github !! Mi ha salvato la vita :) –

risposta

9

Una transizione attività funziona in questo modo. Quando inizi la tua seconda attività, viene visualizzata sopra la prima con uno sfondo trasparente. Gli elementi condivisi vengono posizionati nello stesso modo in cui si trovano nella prima attività e quindi animati nella posizione corretta specificata nella seconda attività.

Nel tuo caso stai usando android: theme = "@ style/Theme.AppCompat.Dialog" che significa che la dimensione dell'area di disegno della seconda attività è inferiore a quella della prima attività. Questo spiega il ritaglio e la non transizione quando si fa clic all'esterno.

Quello che vuoi fare è liberarti di quel tema e implementare il tuo layout con uno sfondo/ombra scuri per poter eseguire la transizione senza problemi.

+0

Questo è più di una soluzione alternativa, ma ci provo io – Longi

+0

Bene, questo funziona, modifico la domanda per scoprire istruzioni dettagliate su come farlo. – Longi