Sto tentando di animare 2 viste semplici da un elemento selezionato in un RecyclerView a un nuovo frammento. Ho esaminato molti esempi di animazione di elementi condivisi da un'attività a un'altra attività, ma pochissimi esempi di animazione di un elemento condiviso da un frammento a un altro frammento all'interno della stessa attività. Funziona quasi.Elementi condivisi che animano tra i frammenti
Ecco la mia struttura.
Attività
- Fragment1 schermo intero con RecyclerView
- Fragment2 schermo intero con dettagli
Quando l'utente seleziona un elemento della RecyclerView in Fragment1, sostituisco Fragment1 con Fragment2 che ha una vista con gli elementi condivisi in essa in diverse posizioni e dimensioni.
C'è un trucchetto per farlo funzionare, devi assicurarti che il tuo nome di transizione sia univoco per ogni elemento nel tuo elenco, e naturalmente che transitionName deve corrispondere al nome di transizione dell'elemento in Fragment2 per l'animazione a giocare. Ho questa parte funzionante, quando seleziono un oggetto, le 2 viste condivise si animano, solo non esattamente come ci si aspetterebbe nel farlo tra 2 attività.
Se seleziono un elemento nella parte inferiore dello schermo, disegna la vista per Fragment2 e anima le 2 viste condivise come se fossero nell'elemento nella parte superiore dello schermo. Difficile da spiegare. Ecco alcune immagini
Fragment1
Fragment2
In entrambi i frammenti sto impostando la seguente
setSharedElementEnterTransition(new ChangeBounds());
setSharedElementReturnTransition(new ChangeBounds());
setAllowEnterTransitionOverlap(true);
setAllowReturnTransitionOverlap(true);
anche nella loro attività principale in onCreate() ho set
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Qualche idea sul perché le mie animazioni di elementi condivise inizino nella parte superiore del mio schermo anche quando sono state avviate nell'elemento selezionato nella parte inferiore dello schermo?
io non sono sicuro di capire ciò che si sta cercando di ottenere. Immagino che le strane barre gialle/blu siano le viste a cui ti riferisci? Quindi nel tuo primo screenshot fai clic sull'elemento e ti aspetti che le due corrispondenti barre giallo/blu si animino nelle posizioni delle barre giallo/blu nel secondo frammento ... ma cosa succede invece? Cosa intendi "...disegna la vista per Fragment2 e anima le 2 viste condivise come se fossero nell'elemento nella parte superiore dello schermo "? Inoltre, cosa rappresentano le frecce nel secondo screenshot? –
BTW, se usi Android Studio, puoi facilmente acquisire una schermata della tua applicazione (consulta [** queste istruzioni **] (https://developer.android.com/sdk/installing/studio-debug.html#screenCap)) e caricala su YouTube (I conoscere la spiegazione del problema deve essere difficile) –
Un'ultima domanda: questo comportamento si verifica _only_ quando si selezionano gli elementi nella parte inferiore dello schermo? Ad esempio, funzionerà come previsto per gli elementi nella parte superiore? –