समन्वयक क्या है?


93

बस नए एंड्रॉइड सपोर्ट डिज़ाइन लाइब्रेरी के डेमो ऐप पर एक नज़र थी। यह क्रिस बेंस द्वारा पर उपलब्ध कराई गई है GitHub । एप्लिकेशन लाया, CoordinatorLayoutभारी उपयोग किया जाता है। इसके अलावा, इस तरह के रूप समर्थन डिजाइन पुस्तकालय वर्गों में से कई FloatingActionButton, SnackBar, AppBarLayoutआदि बर्ताव करता है अलग ढंग से जब प्रयुक्त अंदर CoordinatorLayout

क्या कोई कृपया कुछ लाइट्स को शेड कर सकता है CoordinatorLayoutकि यह ViewGroupएंड्रॉइड के अन्य एस से अलग कैसे है , या कम से कम सीखने की दिशा में सही रास्ता प्रदान करता है CoordinatorLayout


5
android-developers.blogspot.com/2015/05/… इसमें JavaDocs में एक व्यापक, भ्रामक विवरण, विवरण भी है (वर्तमान में सीधे-लिंक करने योग्य रूप में उपलब्ध नहीं है, लेकिन आप developer.and.com/.com/preview से एक ज़िप डाउनलोड कर सकते हैं /download.html )।
कॉमन्सवेयर

1
वास्तव में उपयोग करने का CordinatorLayoutक्या फायदा है ? यह दूसरों पर क्या बढ़त है?
eRaisedToX

जवाबों:


42

यहाँ यह आप के लिए देख रहे हैं।

डॉक्स से

डिज़ाइन लाइब्रेरी का परिचय CoordinatorLayout, एक लेआउट जो बच्चे के विचारों के बीच स्पर्श की घटनाओं पर नियंत्रण का एक अतिरिक्त स्तर प्रदान करता है, कुछ ऐसा जो डिज़ाइन लाइब्रेरी के कई घटकों का लाभ उठाता है।

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

इस लिंक में आपको उपर्युक्त सभी विचारों के डेमो वीडियो दिखाई देंगे।

उम्मीद है की यह मदद करेगा :)


2
लिंक टूट गया है।
योगेश सेरालिया

39

एक समन्वयक क्या है? फैंसी नाम को मूर्ख मत बनने दो, यह स्टेरॉयड पर एक फ्रेमलेयआउट से ज्यादा कुछ नहीं है

यह समझने के लिए कि क्या CoordinatorLayoutहै / करता है, आपको सबसे पहले यह समझना होगा कि समन्वय के लिए इसका क्या अर्थ है।

यदि आप Google शब्द

कोआर्डिनेट

आप यही पाते हैं:

यहां छवि विवरण दर्ज करें

मुझे लगता है कि ये परिभाषाएँ यह बताने में मदद करती हैं कि एक कोऑर्डिनेटर लयआउट अपने दम पर क्या करता है और इसके भीतर के विचार कैसे व्यवहार करते हैं।

एक समन्वयक लयआउट (एक दृश्य समूह) एक (̶a̶ ̶c̶o̶m̶p̶l̶e̶x̶ ̶a̶c̶t̶i̶v̶i̶t̶y̶ ̶o̶r̶ ̶a̶n̶ ̶a̶r̶ Lo̶r̶ Lo̶r̶gLnLgLngLgLgLgLgLgLnLa के विभिन्न तत्वों (बाल दृश्य) को लाता है।

एक कोऑर्डिनेटर लयआउट की मदद से, बच्चे के विचारों ने एक साथ मिलकर काम किया जैसे कि भयानक व्यवहार को लागू करना

drags, swipes, मक्खियों, या किसी भी अन्य इशारों।

एक समन्वयक के अंदर के दृश्य इन व्यवहारों को निर्दिष्ट करके प्रभावी रूप से एक साथ काम करने के लिए दूसरों के साथ बातचीत करते हैं

एक कोऑर्डिनेटरलैट मटेरियल डिज़ाइन का एक सुपर कूल फीचर है जो आकर्षक और सामंजस्यपूर्ण लेआउट बनाने में मदद करता है।

आपको बस अपने बच्चे के विचारों को कोऑर्डिनेटर लयआउट के अंदर लपेटना है।

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

यह हमें देता है कि एक लेआउट है जिसे टूलबार को ढहाने और फ़्लोटिंगएशनबटन को छिपाने के लिए स्क्रॉल किया जा सकता है

खुला हुआ:

यहां छवि विवरण दर्ज करें

बन्द है:

यहां छवि विवरण दर्ज करें


2
रिलेटिव या कंस्ट्रक्ट लेआउट भी विचारों के बीच का संबंध नहीं होगा? यदि कोई ऊपर जाता है तो संबंधित दृश्य ऊपर जाता है। समन्वयक क्यों बेहतर है?
नाग

1
@Snake 1. कोऑर्डिनेटरलैटआउट किसी अन्य दृश्य पर एक दृश्य को व्यवस्थित करने में मदद करता है, कुछ न तो एक कॉन्ट्राट्रैनलआउट या एक रिलेटिवलैटआउट कर सकता है। 2. यह विचारों के संक्रमण को चेतन करने में भी मदद करता है। एक अच्छा उदाहरण व्हाट्स ऐप में "संपर्क देखें" गतिविधि / खंड का संक्रमण है।
फेलिक्स फेम चिनमेरेम

13

नोट करने के लिए एक अतिरिक्त बिंदु। चूंकि ओपी ने विशेष रूप से पूछा

इसके अलावा, फ़्लोटिंगएशनबटन, स्नैकबार, ऐपबर्लैटआउट आदि जैसे कई समर्थन डिज़ाइन लिबरी क्लासेस कोऑर्डिनेटर लयआउट के अंदर उपयोग किए जाने पर अलग तरह से व्यवहार करते हैं।

और मुझे लगता है कि यह इस वजह से है।

CoordinatorLayout एक सुपर-पावर्ड FrameLayout है।

FAB बटन, SnackBar FrameLayout की अवधारणा पर काम करता है, और CoordinatorLayout के बाद से ही FrameLayout की कार्यक्षमता है, यह अलग व्यवहार करने के लिए अन्य विचार कर सकता है।


8

CoordinatorLayout अनिवार्य रूप से बहुत सारी क्षमताओं के साथ फ्रेम लेआउट है जो नाम से स्पष्ट है, यह अपने बच्चों के बीच समन्वय को स्वचालित करता है और सुंदर दृश्य बनाने में मदद करता है। इसका कार्यान्वयन Google Play Store App में देखा जा सकता है। टूलबार कैसे गिरता है और रंग बदलता है।

CoordinatorLayout के बारे में सबसे अच्छी बात वह व्यवहार है जो हम इसके प्रत्यक्ष या अप्रत्यक्ष वंशजों को देते हैं। आपने देखा होगा जब सभी UI गति में हो जाते हैं तब स्क्रॉल करते हैं। इसकी अत्यधिक संभावना है कि व्यवहार इसके जादू पर काम कर रहा है।


7

एंड्रॉइड डॉक्यूमेंटेशन में क्या उपयोगी है, इसका त्वरित स्नैप-शॉट देने के लिए :

अपने विचारों के संबंधपरक व्यवहार को नियंत्रित करने के लिए समन्वयकलेयूट का उपयोग करें,

उदाहरण के लिए यदि आप चाहते हैं कि आपका टूलबार टूट जाए या छिप जाए। Google ने AppBarLayout & CollapsingToolbarLayout की शुरुआत करके इसे बहुत आसान बना दिया, जो दोनों एक समन्वयक के तहत सबसे अच्छा काम करते हैं।

अन्य सबसे अधिक उपयोग की जाने वाली स्थिति तब होती है जब आप एक फ़्लोटिंगएशनबटन चाहते हैं कि आपके कोलैप्सिंगटूलबार के निचले हिस्से से चिपके रहें और इसके साथ घूमें, उन्हें एक समन्वयक के नीचे रखें और app:layout_anchor="@id/YourAppBarId"गोंद के लिए उपयोग करें (!) और app:layout_anchorGravity="bottom|end"जैसे ही स्थिति आपके लिए देखने के लिए पर्याप्त होगी। जादू का काम!

इस लेआउट को एक संदर्भ के रूप में उपयोग करने से, बच्चे के विचारों में बेहतर सहयोग होगा और एक बुद्धिमान तरीके से व्यवहार करेंगे क्योंकि वे एक दूसरे के साथ कोऑर्डिनेटर लयआउट संदर्भ के बारे में जानते होंगे, इसका मतलब है कि आपके फ्लोटिंगएशन बटन अब स्नैकबार आदि द्वारा ओवरलैप नहीं होंगे।

ये केवल सबसे उपयोगी भागों का एक त्वरित सारांश थे, इसलिए यदि आप अपने ऐप को एनिमेट करने में अधिक समय बचाना चाहते हैं, तो इस विषय में थोड़ा गहरा गोता लगाने के लिए इसके लायक होगा।

देख गूगल स्क्रॉल दृश्य गतिविधि टेम्पलेट


1

एक बात जो ध्यान रखना महत्वपूर्ण है, वह यह है कि CoordinatorLayout के पास फ्लोटिंगएशनबटन या AppBarLayout कार्य की कोई सहज समझ नहीं है - यह सिर्फ एक समन्वयक .Behavior के रूप में एक अतिरिक्त API प्रदान करता है, जो बच्चे के विचारों को बेहतर नियंत्रण घटनाओं और इशारों को देखने की अनुमति देता है। साथ ही एक दूसरे के बीच निर्भरता की घोषणा करते हैं और onD dependentViewChanged () के माध्यम से कॉलबैक प्राप्त करते हैं।

दृश्य CoordinatorLayout.DefaultBehavior (YourView.Behavior.class) एनोटेशन का उपयोग करके एक डिफ़ॉल्ट व्यवहार की घोषणा कर सकते हैं, या इसे ऐप, लेआउट_behavior = "com.example.app.YourView $ Behavior" विशेषता के साथ अपनी लेआउट फ़ाइलों में सेट कर सकते हैं। यह ढांचा किसी भी दृश्य के लिए समन्वयकलेयआउट के साथ एकीकरण करना संभव बनाता है।

अब उपलब्ध है! डिज़ाइन लाइब्रेरी अभी उपलब्ध है, इसलिए एसडीके प्रबंधक में एंड्रॉइड सपोर्ट रिपॉजिटरी को अपडेट करना सुनिश्चित करें। फिर आप एक नई निर्भरता के साथ डिज़ाइन लाइब्रेरी का उपयोग शुरू कर सकते हैं:

संकलित करें 'com.android.support:design:22.2.0' ध्यान दें कि जैसा कि डिज़ाइन लाइब्रेरी समर्थन v4 और AppCompat समर्थन लाइब्रेरी पर निर्भर करता है, जब आप डिज़ाइन लाइब्रेरी निर्भरता जोड़ते हैं, तो वे स्वचालित रूप से शामिल हो जाएंगे। हमने यह भी ध्यान रखा कि ये नए विजेट एंड्रॉइड स्टूडियो लेआउट एडिटर के डिज़ाइन दृश्य (कस्टम व्यू के तहत उन्हें खोजें) में उपयोग करने योग्य हैं, जो आपको इन नए घटकों में से कुछ का पूर्वावलोकन करने का एक आसान तरीका देता है।

डिज़ाइन लाइब्रेरी, AppCompat, और Android समर्थन लाइब्रेरी के सभी एक आधुनिक, शानदार दिखने वाले एंड्रॉइड ऐप को खरोंच से सब कुछ बनाने के लिए आवश्यक बिल्डिंग ब्लॉक प्रदान करने में महत्वपूर्ण उपकरण हैं।


0

CoordinatorLayoutएक सुपर संचालित है FrameLayout

डिफ़ॉल्ट रूप से, यदि आप कई बच्चों को जोड़ते हैं, तो FrameLayoutवे एक -दूसरे को ओवरलैप करेंगे। एक FrameLayoutसबसे अधिक बार एक भी बच्चे को देखने के लिए पकड़ करने के लिए इस्तेमाल किया जाना चाहिए। की मुख्य अपील CoordinatorLayoutइसके भीतर विचारों के एनिमेशन और बदलाव को समन्वित करने की क्षमता है। केवल एक्सएमएल का उपयोग करते हुए, आप एक लेआउट का वर्णन कर सकते हैं जहां एक एफएबी आने वाले स्नैकबार के रास्ते से बाहर निकलता है, उदाहरण के लिए, या एक एफएबी है (या कोई अन्य देखें वास्तव में) जो स्पष्ट रूप से दूसरे विजेट से जुड़ा हुआ है और ऑन-स्क्रीन के साथ चलता है। विजेट।

यहाँ मुख्य स्रोत ट्यूटोरियल है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.