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 Buckets رئيسية وما يصل إلى 8 إضافية للأجهزة القابلة للطي.

الخلاصة

  • Screen Density — عدد البكسلات الفعلية لكل بوصة (PPI). يقوم Android بتجميع الشاشات في Density Buckets: mdpi، hdpi، xhdpi، xxhdpi، xxxhdpi.
  • الحاوية الأساسية هي 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 — بكسل لكل بوصة، أو dpi — نقطة لكل بوصة). يستخدم Android مفهوم Density Buckets — مجموعات من الشاشات ذات كثافة متشابهة تستخدم نفس عوامل القياس. على عكس الدقة (عدد البكسلات في العرض والارتفاع)، تحدد الكثافة الحجم الفعلي للبكسل على الشاشة. وفقاً لـ Google Pixel Team (2025)، تبلغ كثافة الهواتف الرائدة الحديثة 450-550 ppi، وهو ما يتوافق مع حاوية xxhdpi-xxxhdpi.

تاريخ وتطور Density Buckets

ظهر نظام Density Buckets في Android 1.6 Donut (2009) مع أول الأجهزة عند 160 dpi (mdpi). مع نمو دقة الشاشات، تمت إضافة حاويات جديدة: hdpi (Android 1.6)، xhdpi (Android 2.3)، xxhdpi (Android 4.1)، xxxhdpi (Android 4.4). تعكس كل حاوية جديدة زيادة بمقدار 1.5× أو 2× في الكثافة مقارنة بالسابقة. وفقاً لـ Android Open Source Project (2025)، 96% من أجهزة Android النشطة الآن لها كثافات تتراوح من hdpi إلى xxxhdpi.

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

Density Buckets هي نطاقات كثافة محددة من قبل Google لتجميع شاشات Android. الحاوية الأساسية هي mdpi (160 dpi). يوضح عامل القياس عدد المرات التي يكون فيها المورد لحاوية معينة أكبر مقارنة بـ mdpi. على سبيل المثال، xhdpi (2×) تعني أن الصورة يجب أن تكون أكبر مرتين في العرض والارتفاع من نسختها mdpi. وفقاً لـ Android Studio Resource Manager (2025)، xxhdpi هي الحاوية الأكثر شيوعاً بين الأجهزة النشطة (38% من حصة السوق)، تليها xhdpi (28%).

الحاويةنطاق DPIالقياسمثال جهازحصة السوق (2025)
ldpi120 dpi0.75×الأجهزة الاقتصادية القديمةأقل من 1%
mdpi120-160 dpiHTC Dream (G1)، أجهزة لوحية 7"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). كثافة الشاشة هي عدد البكسلات لكل بوصة. جهازان بنفس الدقة قد يكون لهما كثافة مختلفة إذا اختلفت أحجام الشاشة الفعلية. على سبيل المثال، هاتف 6 بوصات بدقة 1080×2400 له كثافة حوالي 440 dpi (xxhdpi)، بينما هاتف 5 بوصات بنفس الدقة له حوالي 530 dpi (xxxhdpi). هذا فرق رئيسي: يجب أن تتكيف الواجهة ليس مع الدقة بل مع الكثافة، وإلا ستكون العناصر صغيرة جداً على الأجهزة عالية الكثافة.

مؤهلات موارد الكثافة في Android

يستخدم Android مؤهلات في أسماء مجلدات res لتحميل الموارد لكثافة شاشة محددة: drawable-mdpi، drawable-hdpi، drawable-xhdpi، drawable-xxhdpi، drawable-xxxhdpi. عند بدء التطبيق، يختار Android الموارد من المجلد الذي يتطابق بشكل أفضل مع كثافة الجهاز. إذا لم يكن هناك تطابق تام، يستخدم النظام أقرب حاوية أو يقيس مورداً من كثافة أقل. وفقاً لـ 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 يُضرب في عامل القياس لكل حاوية. يختار Android تلقائياً الملف الصحيح بناءً على DisplayMetrics.density للجهاز. بالنسبة لـ VectorDrawable (تنسيق XML)، ملف واحد في drawable/ كافٍ — يقوم النظام بقياسه دون فقدان الجودة.

حساب البكسلات لكل كثافة

حساب حجم الصورة لكل كثافة يعتمد على معادلة بسيطة: الحجم في mdpi × عامل القياس. إذا كان أيقونة في mdpi بحجم 48×48 بكسل، فإنها ستكون في hdpi 72×72 بكسل (48 × 1.5)، وفي xhdpi — 96×96 بكسل (48 × 2)، وفي xxhdpi — 144×144 بكسل (48 × 3)، وفي xxxhdpi — 192×192 بكسل (48 × 4). وفقاً لـ Material Design Guidelines (2025)، تنطبق هذه المعادلة على جميع الموارد النقطية: الأيقونات والخلفيات والصور و 9-patch.

الحاويةالقياسحجم mdpi (px)حجم في الحاوية (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/ بدون مؤهل — سيقوم النظام بقياسها مع فقدان الجودة. رابعاً، اختبر على جهاز بكثافة مختلفة عن كثافتك الرئيسية — المحاكي يسمح بتغيير الكثافة. خامساً، استخدم WebP بدلاً من PNG — وفقاً لـ Google (2025)، يوفر WebP حجماً أصغر بنسبة 25-35% بنفس الجودة.

  • VectorDrawable — التنسيق المفضل للأيقونات والرسوم التوضيحية البسيطة. ملف XML واحد يستبدل 5 ملفات PNG.
  • Android Studio Asset Studio — توليد تلقائي للموارد لجميع الكثافات من SVG أو PNG.
  • WebP بدون فقدان — التنسيق الأمثل للصور. الحجم أقل بنسبة 30% من PNG بدون فقدان الجودة.
  • 9-patch — للخلفيات القابلة للتمدد. ملف واحد يعمل على جميع الكثافات مع تكوين مناسب لمناطق التمدد.
  • Adaptive Icons — تنسيق أيقونات لـ API 26+. يسمح بتعيين المقدمة والخلفية بشكل منفصل لكثافات مختلفة.

الأسئلة الشائعة

ماذا يعني mdpi في Android؟

mdpi (medium-density pixel-independent) — حاوية الكثافة الأساسية في Android بكثافة 160 dpi. يتم حساب جميع الحاويات الأخرى بالنسبة لـ mdpi: hdpi — 1.5×، xhdpi — 2×، وهكذا. mdpi يقابل بكسل فعلي واحد لكل بكسل مستقل عن الكثافة (dp). يستخدم المصممون mdpi كمرجع عند إنشاء التخطيطات.

كيفية معرفة كثافة شاشة جهاز Android؟

استخدم DisplayMetrics: getResources().getDisplayMetrics().density يعيد عامل القياس (1.0 لـ mdpi، 3.0 لـ xxhdpi). لتحديد الحاوية برمجياً، استدعِ 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×).
  • الحاوية الأساسية mdpi = 160 dpi. يتم حساب جميع الآخرين كـ mdpi × عامل القياس.
  • يتم تخزين الموارد ذات الكثافات المختلفة في مجلدات مؤهلة res/drawable-{bucket}.
  • xxhdpi — الحاوية الأكثر شيوعاً (38%)، تليها xhdpi (28%) و xxxhdpi (18%).
  • VectorDrawable يستبدل 5 ملفات نقطية ويتم قياسه دون فقدان الجودة.
  • استخدم WebP بدلاً من PNG لتوفير 30% من حركة المرور ومساحة التخزين.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا