Screen Density: مفهوم، تراکم پیکسل در Android

نویسنده: IT Sectr منتشر شده: 2026-02-25 زمان مطالعه: 6 دقیقه

توضیح می‌دهیم که Screen Density (Density Buckets) در Android چیست — طبقه‌بندی صفحه‌نمایش‌ها بر اساس تراکم پیکسل: mdpi، hdpi، xhdpi، xxhdpi، xxxhdpi. Screen Density تعیین می‌کند که چه تعداد پیکسل فیزیکی در یک اینچ از صفحه‌نمایش قرار می‌گیرد و مستقیماً بر نحوه نمایش تصاویر و رابط کاربری در دستگاه‌های مختلف تأثیر می‌گذارد. بر اساس Google Android Compatibility Definition (2025)، Android از 6 Density Bucket اصلی و حداکثر 8 bucket اضافی برای دستگاه‌های تاشو پشتیبانی می‌کند.

نکات اصلی

  • Screen Density — تعداد پیکسل‌های فیزیکی در هر اینچ (PPI). Android صفحه‌نمایش‌ها را در Density Buckets گروه‌بندی می‌کند: mdpi، hdpi، xhdpi، xxhdpi، xxxhdpi.
  • bucket پایه — mdpi (160 dpi). بقیه نسبت به آن محاسبه می‌شوند: hdpi = 1.5×، xhdpi = 2×، xxhdpi = 3×، xxxhdpi = 4×.
  • منابع برای تراکم‌های مختلف در پوشه‌های واجد شرایط res/drawable-{density} ذخیره می‌شوند.
  • بر اساس Android Studio (2025)، رایج‌ترین تراکم در دستگاه‌های مدرن xxhdpi است (420+ dpi، 3×).
  • Screen Density به وضوح صفحه‌نمایش بستگی ندارد — دو دستگاه با وضوح یکسان می‌توانند تراکم متفاوتی داشته باشند.

Screen Density چیست؟

Screen Density (تراکم صفحه‌نمایش) — تعداد پیکسل‌های فیزیکی در هر اینچ از صفحه‌نمایش است (ppi — pixels per inch، یا dpi — dots per inch). Android از مفهوم Density Buckets استفاده می‌کند — گروه‌هایی از صفحه‌نمایش‌ها با تراکم مشابه که ضرایب مقیاس‌بندی یکسانی برای آنها اعمال می‌شود. برخلاف وضوح (تعداد پیکسل‌ها در عرض و ارتفاع)، تراکم اندازه فیزیکی پیکسل را در صفحه‌نمایش تعیین می‌کند. بر اساس Google Pixel Team (2025)، تراکم پرچمداران مدرن 450-550 ppi است که با bucketهای xxhdpi-xxxhdpi مطابقت دارد.

تاریخچه و تکامل Density Buckets

سیستم Density Buckets در Android 1.6 Donut (2009) با اولین دستگاه‌های با تراکم 160 dpi (mdpi) ظاهر شد. با افزایش وضوح صفحه‌نمایش‌ها، bucketهای جدید اضافه شدند: hdpi (Android 1.6)، xhdpi (Android 2.3)، xxhdpi (Android 4.1)، xxxhdpi (Android 4.4). هر bucket جدید نشان‌دهنده افزایش 1.5 یا 2 برابری تراکم نسبت به bucket قبلی بود. بر اساس Android Open Source Project (2025)، در حال حاضر 96% از دستگاه‌های فعال Android دارای تراکم از hdpi تا xxxhdpi هستند.

Density Buckets: mdpi، hdpi، xhdpi، xxhdpi، xxxhdpi

Density Buckets — محدوده‌های تراکمی هستند که توسط Google برای گروه‌بندی صفحه‌نمایش‌های Android تعریف شده‌اند. bucket پایه — mdpi (160 dpi). ضریب مقیاس‌بندی (scale factor) نشان می‌دهد که منبع برای یک bucket خاص چند برابر بزرگ‌تر از mdpi است. به عنوان مثال، xhdpi (2×) به این معنی است که تصویر باید 2 برابر عریض‌تر و بلندتر از نسخه mdpi خود باشد. بر اساس Android Studio Resource Manager (2025)، xxhdpi رایج‌ترین bucket در میان دستگاه‌های فعال است (38% بازار)، و پس از آن xhdpi (28%).

Bucketمحدوده DPIScaleدستگاه نمونهسهم بازار (2025)
ldpi120 dpi0.75×دستگاه‌های قدیمی ارزان‌قیمتکمتر از 1%
mdpi120-160 dpiHTC Dream (G1)، تبلت‌های ۷ اینچی3%
hdpi160-240 dpi1.5×Samsung Galaxy S2، Nexus 412%
xhdpi240-320 dpiGoogle Nexus 5، Moto G28%
xxhdpi320-480 dpiSamsung Galaxy S8، Pixel 338%
xxxhdpi480-640 dpiSamsung Galaxy S24 Ultra، Pixel 9 Pro18%

تراکم پیکسل در مقابل وضوح صفحه‌نمایش: تفاوت چیست

وضوح صفحه‌نمایش — تعداد کل پیکسل‌ها در عرض و ارتفاع است (مثلاً 1080×2400). تراکم صفحه‌نمایش — تعداد پیکسل‌ها در هر اینچ است. دو دستگاه با وضوح یکسان می‌توانند تراکم متفاوتی داشته باشند اگر اندازه فیزیکی صفحه‌نمایش متفاوت باشد. به عنوان مثال، یک تلفن ۶ اینچی با وضوح 1080×2400 دارای تراکم حدود 440 dpi (xxhdpi) است، در حالی که یک تلفن ۵ اینچی با همان وضوح حدود 530 dpi (xxxhdpi) تراکم دارد. این تفاوت کلیدی است: رابط کاربری باید نه با وضوح، بلکه با تراکم سازگار شود، در غیر این صورت عناصر در دستگاه‌های با تراکم بالا بسیار کوچک خواهند بود.

تعیین‌کننده‌های منابع تراکم در Android

Android از qualifiers در نام پوشه‌های res برای بارگذاری منابع برای تراکم خاص صفحه‌نمایش استفاده می‌کند: drawable-mdpi، drawable-hdpi، drawable-xhdpi، drawable-xxhdpi، drawable-xxxhdpi. هنگام راه‌اندازی برنامه، Android منابع را از پوشه‌ای که بهترین تطابق را با تراکم دستگاه دارد انتخاب می‌کند. اگر تطابق دقیقی وجود نداشته باشد، سیستم نزدیک‌ترین bucket را می‌گیرد یا منبع را از تراکم پایین‌تر مقیاس‌بندی می‌کند. بر اساس Android Docs (2025)، برای وکتورها (VectorDrawable) تعیین‌کننده‌های تراکم لازم نیست — آنها به صورت خودکار مقیاس‌بندی می‌شوند.

XML

/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)

در این ساختار، هر پوشه حاوی همان آیکون است، اما در اندازه فیزیکی متفاوت بر حسب پیکسل. اندازه پایه 48×48 پیکسل برای mdpi در ضریب مقیاس‌بندی برای هر bucket ضرب می‌شود. Android به طور خودکار فایل مورد نیاز را بر اساس DisplayMetrics.density دستگاه انتخاب می‌کند. برای VectorDrawable (فرمت XML) یک فایل در drawable/ کافی است — سیستم آن را بدون افت کیفیت مقیاس‌بندی می‌کند.

محاسبه پیکسل برای هر تراکم

محاسبه اندازه تصویر برای هر تراکم بر اساس یک فرمول ساده است: اندازه در mdpi × scale factor. اگر آیکون در 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.

BucketScaleاندازه mdpi (px)اندازه در bucket (px)
mdpi48×4848×48
hdpi1.5×48×4872×72
xhdpi48×4896×96
xxhdpi48×48144×144
xxxhdpi48×48192×192

بهترین روش‌های آماده‌سازی منابع برای همه تراکم‌ها

آماده‌سازی صحیح منابع برای Density Buckets شامل پنج قانون کلیدی است. اول، برای آیکون‌های ساده از VectorDrawable استفاده کنید — این کار نیاز به پنج نسخه را از بین می‌برد. دوم، برای تصاویر شطرنجی، همه تراکم‌ها را یکباره از ابزارهای طراحی صادر کنید (Android Studio Asset Studio به طور خودکار تولید می‌کند). سوم، از قرار دادن تصاویر در drawable/ بدون تعیین‌کننده خودداری کنید — سیستم با افت کیفیت مقیاس‌بندی می‌کند. چهارم، روی دستگاهی با تراکم متفاوت از دستگاه اصلی خود تست کنید — شبیه‌ساز امکان تغییر تراکم را فراهم می‌کند. پنجم، به جای PNG از WebP استفاده کنید — بر اساس Google (2025)، WebP با همان کیفیت 25-35% اندازه کوچک‌تری دارد.

  • VectorDrawable — فرمت ترجیحی برای آیکون‌ها و تصاویر ساده. یک فایل XML جایگزین 5 PNG می‌شود.
  • Android Studio Asset Studio — تولید خودکار منابع برای همه تراکم‌ها از SVG یا PNG.
  • WebP با lossless — فرمت بهینه برای عکس‌ها. اندازه 30% کوچک‌تر از PNG بدون افت کیفیت.
  • 9-patch — برای پس‌زمینه‌های مقیاس‌پذیر. یک فایل با تنظیم صحیح مناطق کشش در همه تراکم‌ها کار می‌کند.
  • Adaptive Icons — فرمت آیکون برای API 26+. امکان تنظیم جداگانه foreground و background برای تراکم‌های مختلف.

سوالات متداول

mdpi در Android به چه معناست؟

mdpi (medium-density pixel-independent) — Density Bucket اصلی Android با تراکم 160 dpi است. همه bucketهای دیگر نسبت به mdpi محاسبه می‌شوند: hdpi — 1.5×، xhdpi — 2× و غیره. mdpi معادل یک پیکسل فیزیکی به ازای هر density-independent pixel (dp) است. طراحان هنگام ایجاد طرح‌بندی‌ها دقیقاً بر اساس mdpi کار می‌کنند.

چگونه تراکم صفحه‌نمایش دستگاه Android را بفهمیم؟

از DisplayMetrics استفاده کنید: getResources().getDisplayMetrics().density scale factor را برمی‌گرداند (1.0 برای mdpi، 3.0 برای xxhdpi). برای تعیین برنامه‌نویسی bucket با getResources().getConfiguration().densityDpi تماس بگیرید. در Android Studio همچنین Device Explorer وجود دارد که densityDpi را برای دستگاه متصل نشان می‌دهد.

آیا می‌توان برای همه تراکم‌ها منبع آماده نکرد؟

از نظر فنی — بله، اما با افت کیفیت. اگر منبع فقط در drawable-xxhdpi باشد، در دستگاه mdpi 3 برابر کوچک‌تر می‌شود — تصویر تار خواهد شد. اگر منبع فقط در mdpi باشد، در xxhdpi بزرگ‌تر می‌شود — پیکسل‌شدگی رخ می‌دهد. توصیه می‌شود حداقل برای xhdpi، xxhdpi و xxxhdpi آماده کنید — این 84% از دستگاه‌های فعال را پوشش می‌دهد (2025). برای VectorDrawable یک فایل بدون تعیین‌کننده کافی است.

خلاصه

  • Screen Density — تعداد پیکسل‌های فیزیکی در هر اینچ (dpi/ppi). Android صفحه‌نمایش‌ها را در Density Buckets گروه‌بندی می‌کند: mdpi (1×)، hdpi (1.5×)، xhdpi (2×)، xxhdpi (3×)، xxxhdpi (4×).
  • bucket پایه mdpi = 160 dpi. بقیه به صورت mdpi × scale factor محاسبه می‌شوند.
  • منابع برای تراکم‌های مختلف در پوشه‌های واجد شرایط res/drawable-{bucket} ذخیره می‌شوند.
  • xxhdpi — رایج‌ترین bucket (38%)، پس از آن xhdpi (28%) و xxxhdpi (18%).
  • VectorDrawable جایگزین 5 فایل شطرنجی می‌شود و بدون افت کیفیت مقیاس‌بندی می‌شود.
  • برای صرفه‌جویی 30% در ترافیک و فضا، به جای PNG از WebP استفاده کنید.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید