Что такое CoordinatorLayout?


просто взглянул на демонстрационное приложение новой библиотеки дизайна поддержки Android. Это предусмотрено Крисом Бэйнсом на github. Через приложение, CoordinatorLayout используется в большой степени. Кроме того, многие классы библиотеки поддержки дизайна, такие как FloatingActionButton,SnackBar,AppBarLayout etc. ведет себя по-разному при использовании внутри CoordinatorLayout.

может кто-нибудь, пожалуйста, пролить свет на то, что CoordinatorLayout и чем он отличается от других ViewGroups в Android, или, по крайней мере, обеспечить правильный путь к обучение CoordinatorLayout.

5 80

5 ответов:

вот его вы и ищете.

идее

библиотека дизайна вводит CoordinatorLayout, макет, который обеспечивает дополнительный уровень контроля над сенсорными событиями между дочерними представлениями, чем пользуются многие компоненты в библиотеке проектирования.

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

в этой ссылке вы увидите видео демо все вышеперечисленные мнения.

надеюсь, что это помогает :)

что такое CoordinatorLayout? Не позволяйте фантазии имя обмануть вас, это не более чем FrameLayout на стероидах

чтобы лучше понять, что такое CoordinatorLayout есть/есть, вы должны прежде всего понять / иметь в виду, что значит координировать.

Если Вы Google слово

координации

вот что вы получаете:

enter image description here

Я думаю, что эти определения помогают описать что делает CoordinatorLayout сам по себе и как ведут себя взгляды внутри него.

A CoordinatorLayout (ViewGroup) объединяет различные элементы (дочерние представления) макета (сложной деятельности или организации) в гармоничные или эффективные отношения:

С помощью CoordinatorLayout, взгляды ребенка работают совместно гармонично для того чтобы снабдить внушительные поведения как

перетаскивания, пойло, броски, или любые другие жесты.

представления внутри CoordinatorLayout договариваются с другими, чтобы эффективно работать вместе, указывая эти поведение

A CoordinatorLayout-это супер крутая особенность дизайна материалов, которая помогает создавать привлекательные и гармонизированные макеты.

все, что вам нужно сделать, это обернуть ваши представления ребенка внутри 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>

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

что это дает нам макет, который можно прокрутить, чтобы свернуть панель инструментов и скрыть FloatingActionButton

работает:

enter image description here

работает:

enter image description here

дополнительно отметить. Так как ОП специально спросил

кроме того, многие из классов поддержки дизайна libabry, таких как FloatingActionButton, SnackBar, AppBarLayout etc. вести себя иначе при использовании внутри CoordinatorLayout.

и я думаю, что это из-за этого.

CoordinatorLayout-это супермощный FrameLayout.

кнопка FAB, SnackBar работает над концепцией FrameLayout, и поскольку сам CoordinatorLayout имеет функциональность FrameLayout, он может заставить другие представления вести себя по-другому!.

CoordinatorLayout это по существу макет кадра с большим количеством возможностей, которые очевидны из названия, он автоматизирует координацию между своими детьми и помогает строить красивые виды. Его реализацию можно увидеть в приложении Google Play Store.Как панель инструментов сворачивается и меняет цвета.

самое лучшее в CoordinatorLayoutэто поведение, которое мы даем его прямым или косвенным потомкам. Вы должны были видеть при прокрутке всего пользовательского интерфейса приходит в движение. Его весьма вероятно поведение работает свою магию.

чтобы дать быстрый снимок того, что полезно в Документация Для Android:

используйте CoordinatorLayout, чтобы просто контролировать реляционное поведение ваших представлений,

например, если вы хотите, чтобы Панель инструментов свернуть или скрыть. Google сделал это очень легко, введя AppBarLayout & CollapsingToolbarLayout, которые оба работают лучше всего под CoordinatorLayout.

другая наиболее часто используемая ситуация - это когда вы хотите, чтобы FloatingActionButton придерживайтесь нижней части вашего CollapsingToolbar и двигаться с ним, поставив их под coordinatorLayout и использовать app:layout_anchor="@id/YourAppBarId" для клея(!) и app:layout_anchorGravity="bottom|end" как позиция будет достаточно для вас, чтобы увидеть волшебную работу!

используя этот макет в качестве контекста, дочерние представления будут лучше сотрудничать и вести себя разумно, потому что они будут знать друг о друге через контекст CoordinatorLayout , это означает, что ваши кнопки FloatingAction больше не будут перекрываться на закусочной и т. д.

это было просто краткое изложение наиболее полезных частей, так что если вы хотите сэкономить больше времени на анимации вашего приложения, это будет стоить того, чтобы немного глубже погрузиться в тему.

посмотреть Google Scrolling view activity template