ہم 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں