Co To jest CoordinatorLayout?

Właśnie rzuciłem okiem na aplikację demonstracyjną nowej biblioteki projektów wsparcia dla Androida. Jest on dostarczany przez Chrisa Banesa na github. Przez aplikację, CoordinatorLayout jest mocno używany. Ponadto wiele klas biblioteki projektów wsparcia, takich jak FloatingActionButton, SnackBar, AppBarLayout itd. zachowuje się inaczej, gdy jest używany wewnątrz CoordinatorLayout.

Czy ktoś może rzucić trochę światła na to, co jest CoordinatorLayout i czym różni się od innych ViewGroupw Androidzie, lub przynajmniej podać poprawną ścieżkę do nauki CoordinatorLayout.

Author: ZhiXingZhe - WangYuQi, 2015-05-29

5 answers

To jest to, czego szukasz.

From docs

Biblioteka projektu wprowadza układ CoordinatorLayout, który zapewnia dodatkowy poziom kontroli nad zdarzeniami dotykowymi między widokami potomnymi, z czego korzysta wiele komponentów w Bibliotece projektu.

Https://android-developers.googleblog.com/2015/05/android-design-support-library.html

Pod tym linkiem zobaczysz filmy demo wszystkich wyżej wymienionych widoki.

Mam nadzieję, że to pomoże:)

 33
Author: Qadir Hussain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-24 06:06:45

Co To jest koordynator? Nie daj się zwieść wymyślnej nazwie, to nic więcej niż FrameLayout na sterydach

Aby najlepiej zrozumieć, czym jest/robi CoordinatorLayout, musisz przede wszystkim zrozumieć/pamiętać, co to znaczy koordynować.

Jeśli Wygooglujesz słowo

Współrzędna

Oto co dostajesz:

Tutaj wpisz opis obrazka

Myślę, że te definicje pomagają opisać to, co Koordynator sam robi i jak poglądy zachowuj się w nim.

CoordinatorLayout (Grupa widoków) łączy różne elementy (widoki dzieci) układu (złożonego działania lub organizacji) w harmonijną lub efektywną relację:

Z Pomocą koordynatora, poglądy dziecka harmonijnie współpracują, aby realizować niesamowite zachowania, takie jak

Przeciąganie, machanie, rzucanie, lub jakiekolwiek inne gesty.

Views inside a CoordinatorLayout negocjuj z innymi, aby efektywnie współpracować, określając te zachowania

CoordinatorLayout to super fajna funkcja projektowania materiałów, która pomaga tworzyć atrakcyjne i zharmonizowane układy.

Wszystko, co musisz zrobić, to zawinąć widoki dziecka wewnątrz CoordinatorLayout.

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout        
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true"
 tools:context="com.byte64.coordinatorlayoutexample.ScollingActivity">

 <android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/app_bar_height"
    android:fitsSystemWindows="true"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/toolbar_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">



        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_scolling" />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/fab_margin"
    app:layout_anchor="@id/app_bar"
    app:layout_anchorGravity="bottom|end"
    app:srcCompat="@android:drawable/ic_dialog_email" />

 </android.support.design.widget.CoordinatorLayout>

I content_scrolling:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView     
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 app:layout_behavior="@string/appbar_scrolling_view_behavior"
 tools:context="com.byte64.coordinatorlayoutexample.ScollingActivity"
 tools:showIn="@layout/activity_scolling">

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/text_margin"
    android:text="@string/large_text" />

 </android.support.v4.widget.NestedScrollView>

Daje nam to układ, który można przewijać w celu zwinięcia paska narzędzi i ukrycia FloatingActionButton

Otwórz:

Tutaj wpisz opis obrazka

Zamknięte:

Tutaj wpisz opis obrazka

 17
Author: ojonugwa ochalifu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-29 21:45:33

Dodatkowa uwaga. Od OPP

Również wiele klas libabry wspomagających projektowanie, takich jak FloatingActionButton, SnackBar, AppBarLayout itp. zachowuje się inaczej stosowany wewnątrz CoordinatorLayout.

I chyba właśnie z tego powodu.

CoordinatorLayout jest super-powered FrameLayout.

FAB Button, SnackBar działa na koncepcji FrameLayout, a ponieważ sam CoordinatorLayout ma funkcjonalność FrameLayout, może sprawić, że inne widoki zachowają się inaczej!.

 12
Author: capt.swag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-02 11:35:13

CoordinatorLayout {[2] } jest zasadniczo układem ramek z wieloma możliwościami, co jest oczywiste z nazwy, automatyzuje koordynację wśród swoich dzieci i pomaga budować piękne widoki. Jego implementację można zobaczyć w aplikacji Google Play Store.Jak pasek narzędzi zwija się i zmienia kolory.

Najlepszą rzeczą w Koordynatorlayout jest zachowanie, które dajemy jego bezpośrednim lub pośrednim potomkom. Musisz widzieć podczas przewijania cały interfejs staje się w ruchu. Its bardzo prawdopodobne, że to zachowanie działa magicznie.

 7
Author: Uzair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-24 09:42:36

Aby dać szybkie ujęcie tego, co jest przydatne w dokumentacji Androida :

Użyj CoordinatorLayout, aby po prostu kontrolować relacyjne zachowanie swoich poglądów,

Na przykład, jeśli chcesz, aby pasek narzędzi się zwijał lub ukrywał. Google ułatwiło to wprowadzenie AppBarLayout & CollapsingToolbarLayout, które działają najlepiej pod coordinatorlayout.

Drugą najczęściej używaną sytuacją jest sytuacja, gdy chcesz, aby FloatingActionButton przyklejał się do dna twojego Zwijając pasek i poruszając się z nim, wkładając je pod koordynatorlayout i używając app:layout_anchor="@id/YourAppBarId" do kleju (!) i app:layout_anchorGravity="bottom|end" jako pozycja wystarczy, aby zobaczyć magiczne działanie!

Używając tego układu jako kontekstu, widoki potomne będą miały lepszą współpracę i będą zachowywać się w inteligentny sposób, ponieważ będą świadome siebie za pośrednictwem kontekstu CoordinatorLayout, co oznacza, że Twoje przyciski FloatingAction nie będą już pokrywane przez snackBar itp.

Były to wystarczy krótkie podsumowanie najbardziej przydatnych części , więc jeśli chcesz zaoszczędzić więcej czasu na animowaniu aplikacji, warto będzie głębiej zagłębić się w temat.

Zobacz szablon aktywności Google Scrolling view

 5
Author: AmiNadimi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-23 06:52:31