2010-11-01 15 views
95

मैं हमेशा लचीलापन के कारण रिलेवेटलाइट का उपयोग कर रहा हूं, क्योंकि मुझे इसकी लचीलापन की वजह से, अगर मैं बस कुछ सचमुच सरल दिखाना चाहता था।एक रिलेवेटलाइट लाइनरलायआउट से अधिक महंगा है?

क्या ऐसा करना ठीक है, या जब मैं प्रदर्शन/अच्छे प्रथाओं के दृष्टिकोण से, मैं लाइनरलाइट का उपयोग करने की कोशिश करूँ?

धन्यवाद!

उत्तर

124

गूगल आई/ओ 2013 (Android के लिए लेखन कस्टम दृश्य) पर एक टॉक में, रोमेन लड़का गलतफहमी है कि वजह से हर किसी को सब कुछ के लिए RelativeLayouts उपयोग शुरू करने के स्पष्ट किया। एक सापेक्ष समय हमेशा दो उपाय पास करना पड़ता है। कुल मिलाकर यह नगण्य है जब तक आपका दृश्य पदानुक्रम सरल है। लेकिन यदि आपका पदानुक्रम जटिल है, तो एक अतिरिक्त उपाय पास करना संभवतः काफी महंगा हो सकता है। यदि आप रिलेवेटलाइट्स घोंसला करते हैं, तो आपको एक घातीय माप एल्गोरिदम मिलता है।

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=1m41s

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=38m04s

+7

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन एक सिंगल रिलेटिवेलआउट और 2-3 लाइनरलेआउट्स के बीच चयन करते समय आप कम से कम महंगा समाधान मानेंगे? – Langkiller

+2

एक कॉन्स्ट्रेनटआउटआउट :) – moyheen

50

जब तक आप बहुत सारे दृश्य नहीं डाल रहे हैं (उदा। सूची सूची में), लीनियरलाउट या रिलेटिवलाउट के बीच चयन करने का प्रदर्शन नगण्य है। जो भी नौकरी के लिए उपयोग करने के लिए सबसे सुविधाजनक है चुनें, और जब आपको आवश्यकता हो तो केवल प्रदर्शन के बारे में चिंता करें।

और यहाँ Creating Efficient Layouts के बारे में आधिकारिक डॉक्स RelativeLayout और LinearLayout के प्रदर्शन के बारे में क्या कहते हैं क्या है:

बुनियादी सुविधाओं के लिए चिपका दुर्भाग्य से नहीं लिए सबसे कारगर तरीका है यूजर इंटरफेस बनाने के लिए है। आम उदाहरण रैखिकलायआउट का दुरुपयोग है, जो दृश्य पदानुक्रम में दृश्यों का प्रसार करता है। प्रत्येक दृश्य - या बदतर, प्रत्येक लेआउट प्रबंधक - जिसे आप में जोड़ते हैं, आपका आवेदन लागत पर आता है: प्रारंभिकरण, लेआउट और ड्राइंग धीमे हो जाते हैं। लेआउट पास हो सकता है जब आप घोंसला करते हैं तो कई लाइनरलाइट जो वजन पैरामीटर का उपयोग करते हैं, जिसके लिए बच्चे को दो बार मापने की आवश्यकता होती है।

+3

नगण्य होने का औचित्य? मैंने यह पाया जो सापेक्ष बताता है, जैसा कि मुझे संदेह है कि https://bitbucket.org/spencerelliott/mercury/issue/1/changing-relativelayout-to-linearlayout – max4ever

+0

केवल आंतरिक कंटेनर जोड़ने से बचें। –

-15

आप कोशिश कर सकते हैं

<LinearLayout> 
     <ViewPager/><!--Loading images from net, it is very good as a testing case.--> 
     <ViewPagerIndicator/> 
     <TextView/> <!--Show some info about page--> 
</LinearLayout> 

<RelativeLayout>   
     <ViewPager/><!--Loading images from net, it is very good as a testing case.--> 
     <ViewPagerIndicator below="id of ViewPager"/> 
     <TextView below="id of ViewPagerIndicator"/> <!--Show some info about page--> 
</RelativeLayout> 

आप विभिन्न का एक बहुत वहाँ हो कि मिल जाएगा, तो अपने पेज इंटरनेट से कुछ छवियों को लोड हो रहा है। इस मामले में LinearLayout कभी भी रिलेवेटिवआउट से 100% बेहतर है।

2

Relativelayout Linearlayout से अधिक प्रभावी है।

here से:

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

+2

@ फ़्रीकहेड आप सही हैं कि कोई भी "सही" समाधान नहीं है। यही कारण है कि "सही" समाधान लगभग हमेशा प्रदर्शन के बारे में भूलना और लिखना और पढ़ना सबसे आसान है। –

+1

कि उद्धरण आपके बयान का बैक अप नहीं लेता है, जो केवल एक स्थिति में सत्य है –

संबंधित मुद्दे