2011-04-05 18 views
61

मैं वास्तव में उलझन में महसूस कर रहा हूँ। डेवलपर.android.com पर docs से, ऐसा लगता है कि सभी मौजूदा एंड्रॉइड डिवाइसों पर मेरी छवियों को सही ढंग से स्केल किया गया है (पहलू अनुपात भी) मुझे नीचे इन सभी लेआउट की आवश्यकता है। क्या वास्तव में हर कोई क्या कर रहा है? क्या मुझे कुछ याद आ रहा है, या मुझे इस बारे में एक अलग तरीके से जाना चाहिए?क्या मुझे सभी एंड्रॉइड डिवाइसों का समर्थन करने के लिए 14 अलग-अलग लेआउट की आवश्यकता है?

Low density Small screens QVGA 240x320 
------------------------------------------------ 
layout-small-ldpi 
layout-small-land-ldpi 

Low density Normal screens WVGA400 240x400 (x432) 
------------------------------------------------ 
layout-ldpi 
layout-land-ldpi 

Medium density Normal screens HVGA 320x480 
------------------------------------------------ 
layout-mdpi 
layout-land-mdpi 

Medium density Large screens HVGA 320x480 
------------------------------------------------ 
layout-large-mdpi 
layout-large-land-mdpi 

High density Normal screens WVGA800 480x800 (x854) 
------------------------------------------------ 
layout-hdpi 
layout-land-hdpi 

Xoom (medium density large but 1280x800 res) 
------------------------------------------------ 
layout-xlarge 
layout-xlarge-land 
+0

नहीं आप की जरूरत नहीं है , मैंने कई स्क्रीन संकल्पों को संभालने का अपना तरीका लागू किया है, इस http://stackoverflow.com/a/16518557/1939564 –

+0

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

+0

@wufoo मैं वास्तव में आपकी मेज को पकड़ता हूं। क्या नई स्क्रीन के लिए संख्याएं प्राप्त करने की संभावना है (वे बड़े हो गए हैं, जैसे xxlarge, ..)? या यदि आप मुझे इसके लिए एक लिंक दोहरा सकते हैं, तो मैं इसे पकड़ लूंगा! –

उत्तर

23

आपका एप्लिकेशन क्लासिक लेआउट के साथ उपकरणों की 100% पर काम करेंगे।

आप कुछ क्वालीफायर जोड़कर कुछ बटन जोड़ सकते हैं या लैंडस्केप मोड में लेआउट बदल सकते हैं लेकिन यह आपके ऊपर है!

उदाहरण के लिए, एलडीपीआई (छोटे रिज़ॉल्यूशन) डिवाइस पर, आप कुछ बटन समायोजित करना चाहते हैं या छोटी स्क्रीन को फिट करने के लिए थोड़ा सा बदलना चाहते हैं।

आप लैंडस्केप मोड में और पोर्ट्रेट में अपने लेआउट के नीचे दाईं ओर कुछ बटन भी डाल सकते हैं!

आपको उन्हें "उपयोग करना" नहीं है।

+2

धन्यवाद। लेकिन विशेष रूप से छवि पृष्ठभूमि के साथ मुझे क्या परेशानी हो रही है। जब मेरा आवेदन शुरू होता है तो मेरी कंपनी एक स्प्लैश-स्क्रीन डालना चाहती है और डिवाइस के अभिविन्यास के आधार पर यह वास्तव में अजीब स्केल करती है। मैंने तय किया कि दो स्प्लैश-ससीन छवियां बनाकर; एक चित्र, एक परिदृश्य हालांकि समस्या अब है जब मैं ज़ूम पर ऐप चलाता हूं, स्प्लैश-स्क्रीन सभी धुंधली और जाली होती है। यदि मैं एक क्यूवीजीए एमुलेटर पर ज़ूम रिज़ॉल्यूशन स्प्लैश-स्क्रीन को स्केल करता हूं, तो टेक्स्ट अपठनीय हो जाता है। तो, क्या मैं हर डिवाइस के लिए एक अलग रेज स्प्लैश-स्क्रीन बना सकता हूं, या कहीं कहीं खुश माध्यम है? – wufoo

+2

आपको बस xlarge और/या xlarge-land में एक अलग छवि/लेआउट जोड़ने की आवश्यकता है, तो xoom (और अन्य xlarge स्क्रीन डिवाइस) उन का उपयोग करेंगे, और अन्य सभी सामान्य लोगों को देखेंगे। – stealthcopter

+4

एलडीपीआई और छोटे शब्दों के अर्थ को मिलाकर इस भ्रम की ओर जाता है .. कॉन्फ़िगरेशन क्वालीफायर का उपयोग करके http://developer.android.com/guide/practices/screens_support.html जांचें छोटे, सामान्य, बड़े, xlarge का उपयोग किया जाना चाहिए विभिन्न लेआउट प्रदान करने के लिए .. ldpi, mdpi, hdpi, xhdpi का उपयोग विभिन्न छवि आकार प्रदान करने के लिए किया जाना चाहिए .. बस मेरी राय ... – Ewoks

2

यदि आप AbsoluteLayout का उपयोग नहीं करते हैं तो लेआउट में, आप स्क्रीन को फिट करने के लिए एप्लिकेशन का आकार बदलने जा रहे हैं।

लेकिन कुछ मामलों में, छोटी स्क्रीन के लिए आपको उदाहरण के लिए कम घटकों के साथ एक नया लेआउट घोषित करने की आवश्यकता है।

छवियों के लिए:

आपके पास कुछ विकल्प हैं।

सरल कुछ संकल्पों को अनदेखा करें और डिवाइस को सर्वोत्तम छवि चुनने दें। उन आकारों के लिए AndroidManifest पर घोषित करें जिन्हें आप समर्थन देना चाहते हैं। या सिर्फ एक है और आकार बदलने के लिए अपने आवेदन पेंच।

+0

मेरे पास प्रत्येक के लिए अलग-अलग लेआउट हैं, लेकिन अभी भी काम नहीं कर रहे हैं। http://stackoverflow.com/questions/34378238/landscape-mode-for-app –

0

हां। आपको विभिन्न स्क्रीन रिज़ॉल्यूशन के लिए अलग-अलग लेआउट को परिभाषित करना चाहिए।

जब आपको टेबलेट प्रकार के आवेदन के साथ काम करना है। उस समय वास्तव में आप इसे महसूस करते हैं। विभिन्न लेआउट की आवश्यकता है। क्योंकि गोलियाँ हमेशा अलग-अलग आकार में आती हैं।

एक और बात, जब आप एंड्रॉइड पर काम कर रहे हैं, तो इसका मतलब है कि आपको हमेशा अपने डिवाइस को असली डिवाइस से स्वाद लेना चाहिए। और विभिन्न आकार के अनुकरणकों के साथ भी परीक्षण करें।

7

Android डेवलपर के अनुसार Protip रोमन Nurik से के बारे में स्क्रीन आकार क्वालिफायर:

आप इस तरह के गोलियों के रूप में बड़ी स्क्रीन उपकरणों के लिए कस्टम लेआउट है, तो अब समय का उपयोग बंद करने -large या है -xlarge संसाधन क्वालीफायर और -swXXdp या -wXXdp क्वालीफायर का उपयोग करने के लिए स्विच करें। उत्तरार्द्ध एपीआई स्तर 13 में पेश किया गया था, जो मूल रूप से सभी टैबलेट्स के पास नवीनतम प्लेटफ़ॉर्म संस्करण चार्ट 1 के अनुसार समर्थन है।

मतलब यह है कि मूल रूप से सभी मामलों में जहां -large कोई असर होगा, -swXXdp बजाय इस्तेमाल किया जा सकता और अधिक व्यापक जानकारी प्रदान।

तो कौन सा वास्तविक sw या w क्वालीफायर का उपयोग करना चाहिए?

7 "गोलियाँ:: यहाँ एक त्वरित बस-देना मुझे-कुछ प्रारंभ बिंदु है लेआउट-बड़े, उपयोग लेआउट-sw600dp के बजाय

उदाहरण: नेक्सस 7 = 960 × 600 डी पी;। दो आयामों में से छोटे 600.

10 "टैबलेट: लेआउट-एक्सलार्ज के बजाय, लेआउट-sw720dp का उपयोग करें।

उदाहरण: नेक्सस 10 = 1280 × 800 डीपी; दो आयामों के छोटे 800 कुछ 10 "टेबलेट में थोड़ा और अधिक संकीर्ण हैं तो 720 एक आमतौर पर इस्तेमाल किया स्विचिंग बिंदु।

वहाँ सिर्फ इतना है कि तुलना में यह करने के लिए अधिक है (तुम सच के आधार पर अंक स्विचिंग का चयन करना चाहते है यदि आपकी सामग्री की न्यूनतम आवश्यकताओं, पर नहीं डिवाइस फार्म कारक), लेकिन यह एक और दिन (:: खांसी :: + निक कसाई :: खांसी के लिए एक #Protip है:। :)

+0

किंडल एचडी 7 के बारे में क्या? यह sw530dp के तहत है और सैमसंग टैब 7 "sw" क्वालीफायर की पहचान नहीं कर सकता है क्योंकि इसमें 2.3 है और मेरे ऐप में न्यूनतम एसडीके 8 है। –

+0

@ विशलखखखर लगभग मेरे बाल भूरे रंग के होने लगे !! इस समाधान को पढ़ें: http://stackoverflow.com/questions/13156157/nexus-7-and-kindle-fire-hd-think- अलग –

+0

हां यह सच है .. इसका मतलब है कि पुराने सैमसंग टैब 7 के लिए बड़े पैमाने पर लागू करना आवश्यक है और sw530 किंडल 7 और नेक्सस 7 के लिए आम है? –