2012-05-19 14 views
7

क्या मैं इसे सही ढंग से समझता हूं:यदि एलडीपीआई, एमडीपीआई, एचडीपीआई, एक्सएचडीपीआई के लिए एक ड्रायबल संसाधन प्रदान किया गया है, तो इस ड्रॉबल को नोडपी के लिए प्रदान करने की आवश्यकता नहीं है?

सभी एंड्रॉइड डिवाइस इन 4 घनत्व बाल्टी में से एक में आते हैं: ldpi, mdpi, hdpi, xhdpi।

तो, यदि इनमें से प्रत्येक के लिए घनत्व के लिए एक ड्रॉबल संसाधन प्रदान किया जाता है (एक इनके फ़ोल्डरों में से प्रत्येक में एक ड्रायबल या उसी नाम के साथ), तो उसी नाम के साथ एक/ड्रायबल उपलब्ध कराने के लिए आवश्यक नहीं है/खींचने योग्य// res/drawable-nodpi।

क्या मेरा अंडरस्टाफिंग सही है?

तो, एकमात्र कारण, एंड्रॉइड ओएस के लिए एक नई घनत्व बाल्टी परिभाषित करने के मामले में ऐप को अधिक भविष्य-सबूत बनाने के लिए, उसी संसाधन को/res/drawable में प्रदान करने का अर्थ क्यों होता है?

उत्तर

24

क्या मेरा अंडरस्टाफिंग सही है?

इस पैराग्राफ के माध्यम से, आप कम या ज्यादा सही हैं। आप अपने अगले पैराग्राफ के साथ "रेल बंद" थोड़ा जाना:

तो, एकमात्र कारण, कारण है कि यह समझ में आता है/रेस में है कि एक ही संसाधन उपलब्ध कराने के लिए/drawable हो, एप्लिकेशन अधिक भविष्य बनाने के लिए होगा सबूत, अगर एंड्रॉइड ओएस के लिए एक नई घनत्व बाल्टी परिभाषित किया गया है?

वास्तव में नहीं।

आप संसाधनों को res/drawable/ में डालते हैं जो आंतरिक रूप से मापनीय होते हैं (उदाहरण के लिए, ShapeDrawable)। आपने संसाधनों को res/drawable-nodpi/ में रखा है, किसी कारण से, आप डिवाइस घनत्व से मेल खाने के लिए स्केल नहीं करना चाहते हैं। अपने अन्य संस्करणों में से एक पैमाने:

एंड्रॉयड एक नया घनत्व बाल्टी invents करते हैं (उदा 400dpi के एक अति उच्च घनत्व के लिए -uhdpi), एंड्रॉयड शायद क्या यह आज कर रहा है अगर आप एक घनत्व बाल्टी को छोड़ कर सकते हैं। उदाहरण के लिए, यदि आपके पास -xhdpi है और -hdpi नहीं है, तो -hdpi डिवाइस पर उपयोग के लिए एंड्रॉइड -xhdpi छवि को डाउन-नमूना देगा।

+0

नोडपी अवधारणा के बारे में अच्छी व्याख्या। –

0

अपने संसाधन सभी चार घनत्व के लिए जोड़ा जाता है, तो आप सही है कि तुम नहीं कर रहे हैं फ़ोल्डर /res/drawable को drawable जोड़ने के लिए है। हालांकि, आपने सही ढंग से अनुमान लगाया है कि यदि कोई नया क्वालीफायर दिखाई देता है तो मामले में डिफ़ॉल्ट फ़ोल्डर में कुछ होना सर्वोत्तम होता है। इसलिए, मैं mdpi संसाधनों को /res/drawable-mdpi फ़ोल्डर में नहीं रखने की सलाह देता हूं, लेकिन इसके बजाय डिफ़ॉल्ट फ़ोल्डर (/res/drawable/) पर। यह हर तरह के संसाधन के लिए एक अच्छा अभ्यास है।

/res/drawable-nodpi फ़ोल्डर के लिए, यह एक विशेष फ़ोल्डर है, क्योंकि इसमें संसाधन शामिल होना चाहिए जो स्वचालित रूप से अन्य सभी क्वालीफायरों के विपरीत नहीं है। इसलिए आप आमतौर पर या तो /res/drawable-nodpi फ़ोल्डर का उपयोग करते हैं, या इसका बिल्कुल उपयोग नहीं करते हैं।

+0

तो डाउनवोट क्यों? उत्तर में क्या गलत है? – Malcolm

5

यह सही है, जब तक आपके पास कवर किए गए सभी 4 घनत्व बाल्टी में ड्रॉबल्स हैं। एक सामान्य अभ्यास एक कस्टम ड्राइंग करने योग्य/res/drawable बनाने के लिए है जो आपके घनत्व फैलाने वाले drawables को संदर्भित करता है।

उदाहरण के लिए, आप दबाए गए और दबाए गए विभिन्न राज्यों के साथ एक बटन चाहते हैं। सबसे पहले, आप दबाए गए और दबाए गए बटन के लिए प्रत्येक घनत्व का एक ड्रॉबल शामिल करेंगे।फिर आप निम्न बटन_ब्लैक_सेलेक्टर.एक्सएमएल/res/drawables में बना सकते हैं:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="false" 
     android:drawable="@drawable/button_black"/> 

    <item android:state_pressed="true" 
     android:drawable="@drawable/button_black_selected" /> 

</selector> 
+0

दिलचस्प और सुरुचिपूर्ण दृष्टिकोण, टीएक्स, डेविड जेड – mrd

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

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