2012-07-22 13 views
31

मैं कैलेंडर बना रहा हूं और मुझे ग्रिड की आवश्यकता है। समस्या सीमाओं, या प्रत्येक ग्रिड के बीच की जगह है, जो कि मैं एक ग्रिड अनुकरण करने के लिए उपयोग कर रहा हूं, 1 डीपी है। लेकिन इसकी बजाय मोटी। मैं अन्य कैलेंडर ऐप्स देख रहा हूं जिनके पास सीमाएं हैं, और वे बहुत पतली हैं। यहां तक ​​कि अगर मैं drawable आकार का उपयोग करना चाहता था और इसे 1 डीपी बना देता हूं, तब भी यह मोटाई है। मैंने .5 का उपयोग करने की कोशिश की, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा था। क्या यह संभव नहीं है?एंड्रॉइड डीपी की 1 डीपी से कम समर्थन कर सकता है?

उत्तर

51

एंड्रॉयड आप, एक्सएमएल में dp के लिए भिन्नात्मक मान दर्ज करने के लिए, हालांकि मुझे यकीन है कि मैं इसे सिफारिश करेंगे क्योंकि नहीं कर रहा हूँ की अनुमति नहीं है परिणाम कम भविष्यवाणी करने के लिए/गणना आसान हो डिवाइसेस पिक्सल में dp मूल्यों परिवर्तित (मूल रूप से) का उपयोग निम्न सूत्र:।

px = (int)(scale * dp + 0.5) 

(यानी डिवाइस घनत्व पैमाने निकटतम पूर्ण पिक्सेल मूल्य के लिए गोल)

scale मूल्य डिवाइस की स्क्रीन घनत्व के आधार पर किया जाएगा:

  • MDPI = 1
  • HDPI = 1.5
  • XHDPI = 2
  • XXHDPI = 3

तो 0.5dp उपर्युक्त घनत्व के लिए {1px, 1px, 1px, 2px} का परिणाम होगा, जबकि 1dp {1px, 2px, 2px, 3px} होगा। 0.1dp की तरह एक छोटे मूल्य {1px, 1px, 1px, 1px} को हल होगा क्योंकि उपरोक्त सूत्र में कुछ भी कम से कम 1 एक एकल पिक्सेल ले कर जाता है जब तक कि मूल्य को स्पष्ट रूप से 0dp था (यह एक एकल पिक्सेल चौड़ाई की तुलना में कुछ पतली आकर्षित करने के लिए संभव नहीं है)।

यदि आप यह सुनिश्चित करना चाहते हैं कि सबसे पतली संभव चौड़ाई का उपयोग किया जाता है, तो dp जैसे स्केल किए गए इकाई के बजाय चौड़ाई को स्पष्ट रूप से px के साथ चौड़ाई को परिभाषित करना सबसे अच्छा है। 1px का एक मूल्य सेट सभी उपकरणों पर एक भी पिक्सेल के साथ आकर्षित करेगा, और भी बहुत उम्मीद कर 0.5dp या 0.1dp ही करता है की तुलना में अधिक पठनीय है।

+0

पिक्सल एक बहुत अच्छा विचार है - प्रत्येक डिवाइस यह रूप में ठीक के रूप में यह कर सकते हैं बनाने के लिए अनुमति देता है। धन्यवाद! –

7

हां।

मैं 0.1dp करने के लिए सेट है और यह मेरी 4 "ME860 DRIOD पर 1DP से छोटा है।

+0

ऐसा लगता है कि यह डिवाइस पर निर्भर करता है। मैं 0.5 डीपी की सीमा देखता हूं और यह मेरे नेक्सस 4 पर दिखाता है लेकिन पहले जेन किंडल पर नहीं। – Sam

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