हम Android में Screen Density (Density Buckets) के बारे में बताते हैं — पिक्सेल घनत्व के आधार पर स्क्रीन का वर्गीकरण: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi। Screen Density यह निर्धारित करती है कि स्क्रीन के एक इंच में कितने भौतिक पिक्सेल समाते हैं और सीधे प्रभावित करती है कि विभिन्न उपकरणों पर छवियाँ और इंटरफ़ेस कैसे प्रदर्शित होते हैं। Google Android Compatibility Definition (2025) के अनुसार, Android 6 मुख्य Density Buckets और फोल्डेबल उपकरणों के लिए 8 अतिरिक्त Buckets का समर्थन करता है।
मुख्य बातें
Screen Density स्क्रीन के प्रति इंच भौतिक पिक्सेल की संख्या है (ppi — पिक्सेल प्रति इंच, या dpi — डॉट प्रति इंच)। Android Density Buckets की अवधारणा का उपयोग करता है — समान घनत्व वाली स्क्रीन के समूह जो समान स्केलिंग कारकों का उपयोग करते हैं। रिज़ॉल्यूशन (चौड़ाई और ऊँचाई में पिक्सेल की संख्या) के विपरीत, घनत्व स्क्रीन पर पिक्सेल का भौतिक आकार निर्धारित करता है। Google Pixel Team (2025) के अनुसार, आधुनिक फ्लैगशिप का घनत्व 450-550 ppi है, जो xxhdpi-xxxhdpi bucket के अनुरूप है।
Density Buckets प्रणाली Android 1.6 Donut (2009) में 160 dpi (mdpi) वाले पहले उपकरणों के साथ दिखाई दी। स्क्रीन रिज़ॉल्यूशन बढ़ने के साथ, नए buckets जोड़े गए: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4)। प्रत्येक नया bucket पिछले की तुलना में 1.5× या 2× घनत्व वृद्धि दर्शाता है। Android Open Source Project (2025) के अनुसार, अब 96% सक्रिय Android उपकरणों का घनत्व hdpi से xxxhdpi तक है।
Density Buckets Google द्वारा Android स्क्रीन को समूहित करने के लिए परिभाषित घनत्व सीमाएँ हैं। आधार bucket mdpi (160 dpi) है। स्केल कारक दर्शाता है कि किसी दिए गए bucket का संसाधन mdpi से कितने गुना बड़ा है। उदाहरण के लिए, xhdpi (2×) का अर्थ है कि छवि चौड़ाई और ऊँचाई में अपने mdpi संस्करण से 2 गुना बड़ी होनी चाहिए। Android Studio Resource Manager (2025) के अनुसार, सक्रिय उपकरणों में xxhdpi सबसे आम bucket है (38% बाज़ार हिस्सेदारी), उसके बाद xhdpi (28%) है।
| Bucket | DPI सीमा | स्केल | डिवाइस उदाहरण | बाज़ार हिस्सेदारी (2025) |
|---|---|---|---|---|
| ldpi | 120 dpi | 0.75× | पुराने बजट उपकरण | 1% से कम |
| mdpi | 120-160 dpi | 1× | HTC Dream (G1), 7" टैबलेट | 3% |
| hdpi | 160-240 dpi | 1.5× | Samsung Galaxy S2, Nexus 4 | 12% |
| xhdpi | 240-320 dpi | 2× | Google Nexus 5, Moto G | 28% |
| xxhdpi | 320-480 dpi | 3× | Samsung Galaxy S8, Pixel 3 | 38% |
| xxxhdpi | 480-640 dpi | 4× | Samsung Galaxy S24 Ultra, Pixel 9 Pro | 18% |
स्क्रीन रिज़ॉल्यूशन चौड़ाई और ऊँचाई में पिक्सेल की कुल संख्या है (जैसे, 1080×2400)। स्क्रीन घनत्व प्रति इंच पिक्सेल की संख्या है। समान रिज़ॉल्यूशन वाले दो उपकरणों का घनत्व अलग हो सकता है यदि उनके भौतिक स्क्रीन आकार भिन्न हों। उदाहरण के लिए, 1080×2400 रिज़ॉल्यूशन वाले 6-इंच फ़ोन का घनत्व लगभग 440 dpi (xxhdpi) है, जबकि समान रिज़ॉल्यूशन वाले 5-इंच फ़ोन का लगभग 530 dpi (xxxhdpi) है। यह एक मुख्य अंतर है: इंटरफ़ेस को रिज़ॉल्यूशन के अनुसार नहीं, बल्कि घनत्व के अनुसार अनुकूलित होना चाहिए, अन्यथा उच्च घनत्व वाले उपकरणों पर तत्व बहुत छोटे होंगे।
Android विशिष्ट स्क्रीन घनत्व के लिए संसाधन लोड करने हेतु res फ़ोल्डर नामों में क्वालिफायर का उपयोग करता है: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi। एप्लिकेशन शुरू होने पर, Android डिवाइस के घनत्व से सबसे अच्छी तरह मेल खाने वाले फ़ोल्डर से संसाधन चुनता है। यदि सटीक मेल नहीं है, तो सिस्टम निकटतम bucket का उपयोग करता है या कम घनत्व से संसाधन को स्केल करता है। Android Docs (2025) के अनुसार, वेक्टर (VectorDrawable) के लिए घनत्व क्वालिफायर की आवश्यकता नहीं है — वे स्वचालित रूप से स्केल होते हैं।
/res/
drawable-mdpi/
icon_app.png (48x48 px)
drawable-hdpi/
icon_app.png (72x72 px)
drawable-xhdpi/
icon_app.png (96x96 px)
drawable-xxhdpi/
icon_app.png (144x144 px)
drawable-xxxhdpi/
icon_app.png (192x192 px)
इस संरचना में, प्रत्येक फ़ोल्डर में एक ही आइकन होता है लेकिन अलग-अलग भौतिक पिक्सेल आकार में। mdpi के लिए 48×48 पिक्सेल का आधार आकार प्रत्येक bucket के स्केल कारक से गुणा किया जाता है। Android डिवाइस के DisplayMetrics.density के आधार पर स्वचालित रूप से सही फ़ाइल चुनता है। VectorDrawable (XML प्रारूप) के लिए, drawable/ में एक फ़ाइल पर्याप्त है — सिस्टम इसे गुणवत्ता हानि के बिना स्केल करता है।
आकार की गणना प्रत्येक घनत्व के लिए एक सरल सूत्र पर आधारित है: mdpi में आकार × स्केल कारक। यदि mdpi में कोई आइकन 48×48 px का है, तो hdpi के लिए यह 72×72 px (48 × 1.5), xhdpi के लिए — 96×96 px (48 × 2), xxhdpi के लिए — 144×144 px (48 × 3), xxxhdpi के लिए — 192×192 px (48 × 4) होगा। Material Design Guidelines (2025) के अनुसार, यह सूत्र सभी रास्टर संसाधनों पर लागू होता है: आइकन, पृष्ठभूमि, छवियाँ और 9-patch।
| Bucket | स्केल | mdpi आकार (px) | Bucket आकार (px) |
|---|---|---|---|
| mdpi | 1× | 48×48 | 48×48 |
| hdpi | 1.5× | 48×48 | 72×72 |
| xhdpi | 2× | 48×48 | 96×96 |
| xxhdpi | 3× | 48×48 | 144×144 |
| xxxhdpi | 4× | 48×48 | 192×192 |
उचित तैयारी Density Buckets के लिए संसाधनों में पाँच प्रमुख नियम शामिल हैं। पहला, सरल आइकन के लिए VectorDrawable का उपयोग करें — इससे पाँच प्रतियों की आवश्यकता समाप्त होती है। दूसरा, रास्टर छवियों के लिए, डिज़ाइन टूल से सभी घनत्व निर्यात करें (Android Studio Asset Studio स्वचालित रूप से उत्पन्न करता है)। तीसरा, बिना क्वालिफायर के drawable/ में छवियाँ रखने से बचें — सिस्टम गुणवत्ता हानि के साथ स्केल करेगा। चौथा, अपने मुख्य उपकरण से भिन्न घनत्व वाले उपकरण पर परीक्षण करें — एमुलेटर घनत्व बदलने की अनुमति देता है। पाँचवाँ, PNG के बजाय WebP का उपयोग करें — Google (2025) के अनुसार, WebP समान गुणवत्ता पर 25-35% छोटा आकार देता है।
अक्सर पूछे जाने वाले प्रश्न
mdpi (medium-density pixel-independent) — Android में 160 dpi घनत्व वाला आधार Density Bucket है। अन्य सभी buckets mdpi के सापेक्ष गणना की जाती हैं: hdpi — 1.5×, xhdpi — 2×, इत्यादि। mdpi एक भौतिक पिक्सेल प्रति density-independent pixel (dp) के बराबर है। डिज़ाइनर लेआउट बनाते समय mdpi को संदर्भ के रूप में उपयोग करते हैं।
DisplayMetrics का उपयोग करें: getResources().getDisplayMetrics().density स्केल कारक लौटाता है (mdpi के लिए 1.0, xxhdpi के लिए 3.0)। प्रोग्रामेटिक रूप से bucket निर्धारित करने के लिए getResources().getConfiguration().densityDpi को कॉल करें। Android Studio में Device Explorer भी है जो कनेक्टेड डिवाइसों के लिए densityDpi दिखाता है।
तकनीकी रूप से — हाँ, लेकिन गुणवत्ता हानि के साथ। यदि संसाधन केवल drawable-xxhdpi में उपलब्ध है, तो mdpi डिवाइस पर यह 3× छोटा हो जाएगा — छवि धुंधली हो जाएगी। यदि संसाधन केवल mdpi में है, तो xxhdpi पर यह बड़ा होगा — पिक्सेलेशन। अनुशंसा है कि कम से कम xhdpi, xxhdpi और xxxhdpi के लिए तैयार करें — यह 84% सक्रिय उपकरणों (2025) को कवर करता है। VectorDrawable के लिए, बिना क्वालिफायर वाली एक फ़ाइल पर्याप्त है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें