2016-02-21 6 views
8

Ich versuche zu verstehen, welche Animation in der Google Maps-Anwendung verwendet wird.Wie wird das Layout von Google Maps animiert?

Der Teil, den ich versuche zu verstehen, ist, wenn Sie auf das Textfeld in der Symbolleiste klicken. Das Layout animiert zu einem komplett neuen Bildschirm mit einigen Elementen, die von unten nach oben geschoben werden.

Wie wird das gemacht? Wird ein unteres Blatt sichtbar? Ist es eine neue Aktivität mit gemeinsamen Elementübergängen?

+1

Mögliche Duplikat [Schiebe Layout wie Google Maps v7] (http://stackoverflow.com/questions/18236736/sliding-layout -like-google-maps-v7) –

+0

@ cricket_007 Keine dup. Dieser Effekt kann ziemlich einfach mit einer Bodenfolie oder einer hochschiebbaren Platte erreicht werden. :) –

+0

Früher war es ein Sliding Up Panel Vorlutscher. –

Antwort

2

Das nennt man Aktivitätsübergänge. Wählen Sie aus, welche Layouts in eine zweite Aktivität verschoben werden sollen. Siehe auch die offizielle Dokumentation über Animationen: http://developer.android.com/training/material/animations.html#Transitions

Ein weiterer guter Punkt ist es das Video Talk aus dem Google-Entwickler zu starten: https://www.youtube.com/watch?v=RhiPJByIMrM

Grundsätzlich müssen Sie den Stil ändern, wie hier:

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

Sie Außerdem müssen Sie ein spezielles Attribut namens android:transitionName angeben, um das System anzugeben, das Sie von einer Aktivität in eine zweite verschieben möchten.

+0

AFAIK, Aktivitätsübergänge sind eine Lollipop-Funktion. Sind sie in appcompat verfügbar? :) –

+0

Nein, das ist nicht möglich, da diese Animationen in einem anderen Thread laufen als die normale UI, aber in diesem speziellen Fall könnte es auch funktionieren, wenn Sie nur Fragmente mit einer Animation ersetzen. – rekire

+0

Okay, in der Maps App wird die gleiche Animation vor Lollipop erstellt. Ist es möglich, Animationen auf Layouts in 'onCreate()' anzuwenden, sodass einige Elemente von unten nach oben verschoben werden? –

1

Dies ist eine einzelne Aktivität mit 2 Modi: Kartenmodus und Eingabe + Listenmodus. Sie können ein FrameLayout haben und innerhalb der Map-Root-Ansicht (sichtbar) und der Eingabe-Root-Ansicht (gegangen). Wenn Sie die Liste öffnen möchten, machen Sie sie sichtbar und verwenden Sie ViewAnimation, um sie zu animieren. Ein besserer Ansatz besteht darin, diese 2 Hauptansichten in 2 Fragmente zu zerlegen und das Fragment zu animieren.

Verwandte Themen