रैखिक, सापेक्ष, बाधा, टेबल, फ्रेम इत्यादि इत्यादि। जब आप अपना एप्लिकेशन डिज़ाइन करना चाहते हैं, तो चुनने के लिए Android एप्लिकेशन में लेआउट का एक पूरा समूह होता है। सवाल यह है कि कौन सा सबसे अच्छा है?
इससे पहले कि हम अलग-अलग लेआउट का विवरण दें, हम पहले व्यू ऑब्जेक्ट पदानुक्रम और एंड्रॉइड की ड्राइंग प्रक्रिया पर जाएंगे।
देखें और समूह देखें
व्यूग्रुप को किसी भी दृश्य के मूल वर्ग के रूप में और लेआउट के लिए आधार वर्ग के रूप में सोचें। यह एक ऐसी वस्तु का प्रतिनिधित्व करता है जो अन्य विचारों के लिए कंटेनर है। उदाहरण के लिए, एक रैखिक लेआउट एक व्यूग्रुप . है चूंकि इसमें दृश्य और अन्य लेआउट भी हो सकते हैं।
दूसरी ओर, दृश्य UI तत्वों का मूल निर्माण खंड है। दृश्य एक व्यूग्रुप का हिस्सा हो सकते हैं। उदाहरण के लिए, एक टेक्स्ट व्यू एक दृश्य है ।
माप -> लेआउट -> ड्रा -> दोहराएं
लेआउट Android में XML फ़ाइलों के रूप में सहेजे जाते हैं। लेकिन वे उन वस्तुओं में कैसे परिवर्तित होते हैं जिन्हें हम स्क्रीन पर देखते हैं? प्रत्येक एक्सएमएल फ़ाइल तत्काल हो जाती है (पढ़ें:फुलाया जाता है) और एक दृश्य पदानुक्रम वृक्ष बनता है। इसका मतलब यह है कि यदि आपके पास लेआउट बी है जो लेआउट ए के अंदर घोंसला है, तो उनके पास एक बच्चा होगा - माता-पिता संबंध (लेआउट ए लेआउट बी का अभिभावक है)। एक बार पेड़ बनने के बाद, 3 चरण होंगे:माप, लेआउट और ड्रा। इनमें से प्रत्येक चरण गहराई से पहले खोज क्रम में पेड़ को पार करता है।
माप
पहले चरण में, प्रत्येक पैरेंट नोड अपने बच्चों के आकार के संबंध में कुछ बाधाओं का पता लगाता है। यह इन सीमाओं को नीचे की ओर अपने बच्चों तक पहुँचाता है, जहाँ प्रत्येक बच्चा अपने स्वयं के आकार (वह कितना बड़ा होना चाहता है) का मूल्यांकन करेगा और उसे दी गई सीमाओं और उसके बच्चों की सीमाओं को ध्यान में रखेगा।
लेआउट
यहां, प्रत्येक नोड स्क्रीन पर अपने प्रत्येक बच्चे का अंतिम आकार और स्थिति तय करेगा।
ड्रा करें
रूट नोड से शुरू होकर, जो खुद को खींचता है, फिर यह अपने बच्चों को खुद को खींचने के लिए कहता है। इस तरह, क्या होता है कि एक माता-पिता को खींचा जाएगा और उसके बच्चों को उसके ऊपर खींचा जाएगा।
उपरोक्त प्रक्रिया को ध्यान में रखते हुए, आपको अपने एप्लिकेशन के लेआउट को यथासंभव उथला रखने का प्रयास करना चाहिए ताकि दृश्य पदानुक्रम को पार करने में लगने वाले समय को कम किया जा सके
लेआउट ब्रेकडाउन
रैखिक
अपने बच्चों को लंबवत या क्षैतिज के उन्मुखीकरण के साथ एक पंक्ति में व्यवस्थित करता है। मतलब, सभी व्यू या तो एक पंक्ति में होंगे या एक कॉलम में। आप एंड्रॉइड:ओरिएंटेशन . का उपयोग करके दिशा निर्दिष्ट कर सकते हैं विशेषता।
एक रेखीय लेआउट की एक दिलचस्प विशेषता है लेआउट_वेट विशेषता। इसका उपयोग रैखिक लेआउट को यह बताने के लिए किया जाता है कि बच्चे के विचारों के बीच की जगह को कैसे विभाजित किया जाए। यह तब उपयोगी होता है जब आप चाहते हैं कि आपका लेआउट उपकरणों और ओरिएंटेशन के बीच सुसंगत हो।
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="World!"
/>
</LinearLayout>
मान लें कि आप पहला टेक्स्ट व्यू चाहते थे, जिसमें नमस्ते, . शब्द हो हमेशा स्क्रीन की चौड़ाई का 3/4 भाग लेने के लिए। ऐसा करने के लिए, हम layout_weight विशेषता का उपयोग कर सकते हैं।
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="4" // <-- We added a total weight for our layout (4)
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3" // <-- Will have a weight of 3 out of 4 (3/4)
android:text="Hello" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="World!"
android:layout_weight="1" // <-- Will have a weight of 1 out of 4 (1/4)
/>
</LinearLayout>
रिश्तेदार
जैसा कि नाम से ही स्पष्ट है, यह लेआउट अपने आंतरिक चाइल्ड व्यू को सापेक्ष स्थिति में सेट करेगा। यह आपके लेआउट पदानुक्रम को बिना नेस्टेड दृश्य समूहों के सपाट रख सकता है। एक ही समय में, हालांकि, प्रत्येक सापेक्ष लेआउट को दो माप पास की प्रक्रिया से गुजरना पड़ता है, जो प्रदर्शन को प्रभावित कर सकता है।
RelativeLayout की एक उपयोगी विशेषता centerInParent का उपयोग करके बच्चे के दृश्य को केंद्रित करने की क्षमता है। विशेषता।
बाधा
एक बाधा उस तत्व के लिए एक कनेक्शन या संरेखण है जिससे बाधा जुड़ी हुई है। आप मौजूद अन्य विचारों के सापेक्ष प्रत्येक बच्चे के दृष्टिकोण के लिए विभिन्न बाधाओं को परिभाषित करते हैं। यह आपको समतल दृश्य पदानुक्रम (कोई नेस्टेड व्यूग्रुप नहीं) के साथ जटिल लेआउट बनाने की क्षमता देता है। RelativeLayout के समान, इस लेआउट को भी दो माप पास की आवश्यकता है।
फ़्रेम
इस लेआउट का उपयोग केवल एक बच्चे के दृश्य को रखने के लिए किया जाता है, इस प्रकार लेआउट में किसी अन्य दृश्य को अवरुद्ध करता है। लेआउट स्वयं अपने सबसे बड़े चाइल्ड व्यू (दृश्यमान या नहीं), साथ ही कुछ पैडिंग जितना बड़ा होगा।
फ़्रेमलेआउट के अंदर कई चाइल्ड व्यू होने से बचें क्योंकि बच्चे के विचारों को एक दूसरे को ओवरलैप करने से बचना मुश्किल होगा। आप लेआउट_ग्रेविटी . निर्दिष्ट करके इन चाइल्ड व्यू की स्थिति को नियंत्रित कर सकते हैं प्रत्येक बच्चे के लिए विशेषता।
सूची दृश्य/ग्रिड दृश्य
उपयोग करें जब आपको स्क्रीन पर कई आइटम प्रस्तुत करने की आवश्यकता हो (जैसे रेस्तरां मेनू में)। सूची दृश्य एक एकल स्तंभ सूची है जिसे उपयोगकर्ता स्क्रॉल कर सकता है। आप ग्रिड व्यू को एक से अधिक कॉलम वाले लिस्ट व्यू के रूप में सोच सकते हैं।
इन लेआउट के बारे में जानना महत्वपूर्ण है कि दृश्य गतिशील होते हैं और रनटाइम पर बनाए जाते हैं। आइटम को रनटाइम पर पॉप्युलेट करने के लिए, आपको एक एडेप्टर व्यू का उपयोग करने की आवश्यकता है।
टेबललेआउट
ग्रिड व्यू के समान, यह लेआउट अपने बच्चों को पंक्तियों और स्तंभों में व्यवस्थित करता है। प्रत्येक लेआउट में कई TableRow ऑब्जेक्ट होंगे, प्रत्येक एक पंक्ति को परिभाषित करेगा।
जब तक आपको अपने लिए सबसे अच्छा काम करने वाला लेआउट न मिल जाए, तब तक अलग-अलग लेआउट आज़माने से न डरें। नीचे दी गई टिप्पणियों में मुझे बेझिझक बताएं कि कौन सा लेआउट आपके लिए सबसे उपयोगी है और क्यों।