2016-02-21 10 views
8

Sto cercando di capire quale animazione viene utilizzata nell'applicazione di Google Maps.Come viene animato il layout di Google Maps?

La parte che sto cercando di capire è quando si fa clic sulla casella di testo nella barra degli strumenti. Il layout si anima per presentare uno schermo completamente nuovo con alcuni elementi che scorrono dal basso.

Come è fatto? È un foglio di fondo che diventa visibile? È una nuova attività con transizioni di elementi condivise?

+1

Eventuali duplicati di [layout di scorrimento come Google maps V7] (http://stackoverflow.com/questions/18236736/sliding-layout -like-google-maps-v7) –

+0

@ cricket_007 Non un dup. Questo effetto può essere fatto abbastanza facilmente utilizzando un foglio di sotto o un pannello scorrevole. :) –

+0

Era un pre-lecca-lecca a pannelli scorrevoli. –

risposta

2

Questo è chiamato transizioni di attività. Dove scegli quali layout dovrebbero essere spostati in una seconda attività. Si veda anche la documentazione ufficiale su animazioni: http://developer.android.com/training/material/animations.html#Transitions

Un altro buon punto per iniziare è il video parla da Google Developers: https://www.youtube.com/watch?v=RhiPJByIMrM

In sostanza è necessario modificare lo stile come qui:

<style name="BaseAppTheme" parent="android:Theme.Material"> 
    <!-- enable window content transitions --> 
    <item name="android:android:windowActivityTransitions">true</item> 

    <!-- specify enter and exit transitions --> 
    <item name="android:windowEnterTransition">@transition/explode</item> 
    <item name="android:windowExitTransition">@transition/explode</item> 

    <!-- specify shared element transitions --> 
    <item name="android:windowSharedElementEnterTransition"> 
    @transition/change_image_transform</item> 
    <item name="android:windowSharedElementExitTransition"> 
    @transition/change_image_transform</item> 
</style> 

È Inoltre, è necessario specificare un attributo speciale chiamato android:transitionName per indicare il sistema che si desidera spostare da un'attività a un'altra.

+0

AFAIK, le transizioni di attività sono una funzionalità Lollipop. Sono disponibili in appcompat? :) –

+0

No, non è possibile dal momento che le animazioni eseguite sono su un thread diverso dall'interfaccia utente normale, tuttavia in questo caso speciale potrebbe funzionare anche quando si sostituiscono i frammenti, con un'animazione. – rekire

+0

Ok, nell'app Maps, la stessa animazione viene eseguita pre-Lollipop. È possibile applicare animazioni ai layout in 'onCreate()' in modo che alcuni elementi scivolino dal basso? –

1

Questa è una singola attività che ha 2 modalità: modalità mappa e modalità input + lista. Si può avere un FrameLayout e all'interno hanno la vista radice della mappa (visibile) e la vista radice di input (andata). Quando vuoi aprire l'elenco, rendilo visibile e usa ViewAnimation per animarlo. Un approccio migliore consiste nel suddividere queste 2 viste principali in 2 frammenti e animare il frammento.