لمحة عن الأجزاء المُدمَجة في النوافذ

نظام Android الأساسي مسؤول عن رسم واجهة مستخدم النظام، مثل شريط الحالة وشريط التنقّل. يتم عرض واجهة مستخدم النظام هذه بغض النظر عن التطبيق الذي يستخدمه المستخدم.

توفّر WindowInsets معلومات عن واجهة مستخدم النظام لضمان عرض تطبيقك في المنطقة الصحيحة وعدم حجب واجهة المستخدم الخاصة بك من خلال واجهة مستخدم النظام.

العرض على الشاشة بأكملها لعرض عناصر واجهة المستخدم خلف أشرطة النظام
الشكل 1. استخدام ميزة "العرض على الشاشة بأكملها" لعرض عناصر واجهة المستخدم خلف أشرطة النظام

في الإصدار 14 من نظام التشغيل Android (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأقدم، لا يتم تلقائيًا عرض واجهة مستخدم تطبيقك أسفل أشرطة النظام والصور المقطوعة للشاشة.

على Android 15 (مستوى واجهة برمجة التطبيقات 35) والإصدارات الأحدث، يتم عرض تطبيقك أسفل أشرطة النظام والصور المقطوعة للشاشة عندما يستهدف الإصدار 35 من حزمة تطوير البرامج (SDK). يؤدي ذلك إلى توفير تجربة مستخدم أكثر سلاسة ويسمح لتطبيقك بالاستفادة الكاملة من مساحة النافذة المتاحة له.

يُطلق على عرض المحتوى خلف واجهة مستخدم النظام اسم العرض على الشاشة بأكملها. في هذه الصفحة، يمكنك التعرّف على الأنواع المختلفة من المساحات الداخلية، وكيفية عرض المحتوى على كامل الشاشة، وكيفية استخدام واجهات برمجة التطبيقات الخاصة بالمساحات الداخلية لإضافة تأثيرات حركية إلى واجهة المستخدم وضمان عدم حجب محتوى تطبيقك بواسطة عناصر واجهة المستخدم في النظام.

أساسيات المسافة الداخلية

عندما يعرض التطبيق المحتوى من الحافة إلى الحافة، عليك التأكّد من أنّ المحتوى والتفاعلات المهمة لا يحجبها واجهة مستخدم النظام. على سبيل المثال، إذا تم وضع زر خلف شريط التنقل، فقد لا يتمكن المستخدم من النقر فوقه.

يتم تحديد حجم واجهة مستخدم النظام ومعلومات حول مكان وضعها باستخدام المساحات المتروكة.

لكل جزء من واجهة مستخدم النظام نوع مقابل من الإطار الداخلي يصف حجمه ومكان وضعه. على سبيل المثال، توفّر إضافات شريط الحالة حجم شريط الحالة وموضعه، بينما توفّر إضافات شريط التنقّل حجم شريط التنقّل وموضعه. يتكوّن كل نوع من أنواع الإدراج من أربعة أبعاد بالبكسل: أعلى ويسار ويمين وأسفل. تحدّد هذه الأبعاد مدى امتداد واجهة مستخدم النظام من الجوانب المقابلة لنافذة التطبيق. ولتجنُّب التداخل مع هذا النوع من واجهة مستخدم النظام، يجب أن تكون واجهة مستخدم التطبيق مُدرَجة بهذا المقدار.

تتوفّر أنواع الإطارات المضمّنة التالية في Android من خلال WindowInsets:

WindowInsets.statusBars

تمثّل هذه المَعلمة الأجزاء التي تصف أشرطة الحالة. هذه هي أشرطة واجهة المستخدم العلوية للنظام التي تحتوي على رموز الإشعارات والمؤشرات الأخرى.

WindowInsets.statusBarsIgnoringVisibility

تمثّل هذه السمة العناصر المضمّنة في شريط الحالة عندما يكون مرئيًا. إذا كانت أشرطة الحالة مخفية (بسبب الدخول في وضع ملء الشاشة المجسم)، ستكون العناصر المضمّنة في شريط الحالة الرئيسي فارغة، ولكن هذه العناصر المضمّنة لن تكون فارغة.

WindowInsets.navigationBars

تمثّل هذه المَعلمة الأجزاء التي تصف أشرطة التنقّل. وهي أشرطة واجهة مستخدم النظام على الجانب الأيمن أو الأيسر أو السفلي من الجهاز، وتصف شريط التطبيقات أو رموز التنقّل. ويمكن أن تتغيّر هذه الأبعاد أثناء التشغيل استنادًا إلى طريقة التنقّل المفضّلة لدى المستخدم والتفاعل مع شريط التطبيقات.

WindowInsets.navigationBarsIgnoringVisibility

تمثّل هذه السمة الأجزاء المقتطعة من شريط التنقّل عندما يكون ظاهرًا. إذا كانت أشرطة التنقّل مخفية (بسبب الدخول في وضع ملء الشاشة المجسم)، ستكون الأجزاء الداخلية لشريط التنقّل الرئيسي فارغة، ولكن هذه الأجزاء الداخلية لن تكون فارغة.

WindowInsets.captionBar

تمثّل هذه السمة الجزء الداخلي الذي يصف زخرفة نافذة واجهة مستخدم النظام إذا كانت في نافذة ذات شكل حر، مثل شريط العناوين العلوي.

WindowInsets.captionBarIgnoringVisibility

تمثّل هذه السمة الأجزاء الداخلية لشريط الشرح عندما يكون مرئيًا. إذا كانت أشرطة العناوين مخفية، ستكون الأجزاء الداخلية لشريط العناوين الرئيسي فارغة، ولكن هذه الأجزاء الداخلية لن تكون فارغة.

WindowInsets.systemBars

مجموعة من أشرطة النظام، والتي تشمل أشرطة الحالة وأشرطة التنقّل وشريط العناوين

WindowInsets.systemBarsIgnoringVisibility

تمثّل هذه السمة المساحات المتروكة لشريط النظام عندما يكون مرئيًا. إذا كانت أشرطة النظام مخفية (بسبب الدخول في وضع ملء الشاشة المجسم)، ستكون الأجزاء الداخلية لشريط النظام الرئيسي فارغة، ولكن هذه الأجزاء الداخلية لن تكون فارغة.

WindowInsets.ime

تمثّل هذه السمة المساحة التي تشغلها لوحة المفاتيح الافتراضية في أسفل الشاشة.

WindowInsets.imeAnimationSource

تمثّل هذه المَعلمة المساحة التي تشغلها لوحة المفاتيح الافتراضية قبل الحركة الحالية للوحة المفاتيح.

WindowInsets.imeAnimationTarget

تمثّل هذه المَعلمة المساحة التي ستشغلها لوحة المفاتيح الافتراضية بعد انتهاء الحركة الحالية للوحة المفاتيح.

WindowInsets.tappableElement

نوع من العناصر المضمّنة يصف معلومات أكثر تفصيلاً عن واجهة مستخدم التنقّل، ويوفّر مقدار المساحة التي سيتعامل فيها النظام مع "النقرات"، وليس التطبيق. بالنسبة إلى أشرطة التنقّل الشفافة التي تستخدم ميزة "التنقّل بالإيماءات"، يمكن النقر على بعض عناصر التطبيق من خلال واجهة مستخدم التنقّل في النظام.

WindowInsets.tappableElementIgnoringVisibility

تمثّل هذه السمة العناصر القابلة للنقر التي تظهر عند عرضها. إذا كانت العناصر القابلة للنقر مخفية (بسبب الدخول في وضع ملء الشاشة الغامر)، ستكون العناصر الرئيسية القابلة للنقر فارغة، ولكن هذه العناصر لن تكون فارغة.

WindowInsets.systemGestures

تمثّل هذه الإعدادات مقدار المساحة التي سيعترض فيها النظام الإيماءات للتنقّل. يمكن للتطبيقات تحديد معالجة قدر محدود من هذه الإيماءات يدويًا باستخدام Modifier.systemGestureExclusion.

WindowInsets.mandatorySystemGestures

مجموعة فرعية من إيماءات نظام التشغيل التي سيتعامل معها النظام دائمًا، ولا يمكن إيقافها باستخدام Modifier.systemGestureExclusion.

WindowInsets.displayCutout

تمثّل هذه العناصر مقدار المسافة اللازمة لتجنُّب التداخل مع صورة مقطوعة للشاشة (شق أو ثقب).

WindowInsets.waterfall

تمثّل الأجزاء المقتطعة المناطق المنحنية في شاشة العرض الانحداري لطلبات الشبكة. تتضمّن الشاشة المنحنية مناطق منحنية على طول حواف الشاشة حيث تبدأ الشاشة في الالتفاف على طول جوانب الجهاز.

يتم تلخيص هذه الأنواع من خلال ثلاثة أنواع من الأجزاء "الآمنة" التي تضمن عدم حجب المحتوى:

تحمي أنواع الإطارات "الآمنة" هذه المحتوى بطرق مختلفة، استنادًا إلى إطارات المنصة الأساسية:

  • استخدِم WindowInsets.safeDrawing لحماية المحتوى الذي لا يجب عرضه تحت أي واجهة مستخدم للنظام. هذا هو الاستخدام الأكثر شيوعًا للعناصر الداخلية: لمنع رسم المحتوى الذي تحجبه واجهة مستخدم النظام (إما جزئيًا أو كليًا).
  • استخدِم WindowInsets.safeGestures لحماية المحتوى باستخدام الإيماءات. يؤدي ذلك إلى تجنُّب تعارض إيماءات نظام التشغيل مع إيماءات التطبيق (مثل تلك الخاصة بالبطاقات السفلية أو لوحات العرض الدوّارة أو الألعاب).
  • استخدِم WindowInsets.safeContent كمزيج من WindowInsets.safeDrawing وWindowInsets.safeGestures لضمان عدم تداخل المحتوى المرئي وعدم تداخل الإيماءات.