È possibile.
Innanzitutto, quando si rileva nel proprio frammento che la transizione sta per accadere, creare un array di Pair<View, String>
che si popola con il nome di visualizzazione e di transizione.
Per esempio, se si desidera animare un'immagine in miniatura da l'immagine alla massima larghezza:
Pair[] pairs = new Pair[1];
pairs[0] = new Pair(thumbnailImage, "THUMBNAIL_IMAGE");
In secondo luogo, tale matrice passare all'attività del frammento in modo che possa iniziare l'effettiva transizione. (Sto usando Otto per passare quell'evento, puoi usare i normali callback se vuoi).
Quindi, nella tua attività, inizia la seconda attività. (Ho creato un metodo semplice per farlo)
public static void transitionExpand(Activity activity, Intent intent, Pair<View, String>[] sharedElements) {
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements);
ActivityCompat.startActivity(activity, intent, options.toBundle());
}
Nella seconda attività, è possibile aggiungere il frammento nel solito modo. Poi, nel secondo metodo di frammento onViewCreated()
, è possibile chiamare:
ViewCompat.setTransitionName(fullWidthImage, "THUMBNAIL_IMAGE");
spero che aiuta
fonte
2014-12-17 11:57:18
Non funziona ... dovrei usare anche addSharedElement (Visualizza sharedElement, String name)? Nell'attività chiamata, ho un frammento con un cercapersone e un frammento. Potrebbe essere il problema? – Matroska
no. quale versione del sistema operativo stai provando? –
Android Lollipop. – Matroska