الصورة المقطوعة للشاشة هي منطقة على بعض الأجهزة تمتد إلى سطح الشاشة. يتيح تجربة شاملة مع توفير مساحة للمستشعرات المهمة الموجودة في الجزء الأمامي من الجهاز.
يتوافق Android مع الصور المقطوعة للشاشة على الأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث. ومع ذلك، يمكن للشركات المصنّعة للأجهزة أيضًا إتاحة صور مقطوعة للشاشة على الأجهزة التي تعمل بنظام التشغيل Android 8.1 أو الإصدارات الأقدم.
يوضّح هذا المستند طريقة التوافق مع الأجهزة التي بها قصاصات، بما في ذلك كيفية التعامل مع منطقة الاقتصاص، التي تعني المستطيل الممتد من الحافة إلى الحافة على سطح الشاشة الذي يحتوي على الصورة المقطوعة.
اختَر كيفية معالجة تطبيقك للمناطق المقطوعة.
إذا كنت لا تريد أن يتداخل المحتوى مع منطقة مقطوعة، يمكنك بشكل عام التأكّد من عدم تداخل المحتوى مع شريط الحالة وشريط التنقّل. إذا كنت تعرض الصورة المقطوعة في المنطقة المقطوعة، استخدِم
WindowInsetsCompat.getDisplayCutout()
لاسترداد عنصر DisplayCutout
الذي يحتوي على الأجزاء الداخلية الآمنة ومربّع الإحاطة لكل صورة مقطوعة. تتيح لك واجهات برمجة التطبيقات هذه التحقق مما إذا كان المحتوى الخاص بك يتداخل مع الصورة المقطوعة بحيث يمكنك تغيير موضعه إذا لزم الأمر.
يمكنك أيضًا تحديد ما إذا كان المحتوى معروضًا خلف منطقة الصورة المقطوعة. تتحكّم سمة تنسيق نافذة layoutInDisplayCutoutMode
في طريقة رسم المحتوى ضمن منطقة الصورة المقطوعة.
يمكنك ضبط layoutInDisplayCutoutMode
على إحدى القيم التالية:
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
: يُسمح دائمًا بتوسيع المحتوى ليشمل المناطق المقطوعة. وهذا هو الوضع التلقائي للأجهزة التي تعمل بالإصدار 15 من نظام التشغيل Android أو الإصدارات الأحدث.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
: يتم عرض المحتوى في منطقة الصورة المقطوعة بالوضعَين العمودي والأفقي. لا تستخدمه للنوافذ العائمة.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
: لا يظهر المحتوى أبدًا في منطقة الصورة المقطوعة.
يمكنك ضبط وضع الصورة المقطوعة آليًا أو من خلال ضبط
نمط في نشاطك. يحدد المثال التالي نمطًا لتطبيق السمة LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
على النشاط.
<style name="ActivityTheme"> <item name="android:windowLayoutInDisplayCutoutMode"> shortEdges <!-- default, shortEdges, or never --> </item> </style>
توضّح الأقسام التالية أوضاع الصور المقطوعة المختلفة بمزيد من التفصيل.
السلوك التلقائي
عند استخدام الوضع "بورتريه" بدون تعيين علامات خاصة، يتم تغيير حجم شريط الحالة في الجهاز الذي يعرض صورة مقطوعة ليصبح طوله على الأقل بطول الصورة المقطوعة، ويتم عرض المحتوى في المنطقة أدناه. في الوضع الأفقي أو وضع ملء الشاشة، تكون نافذة التطبيق مُعدّة للعرض على شاشة عريضة أفقيًا بحيث لا يظهر أي من المحتوى في منطقة الصورة المقطوعة.
عرض المحتوى في مناطق مقطوعة لحافة قصيرة
بالنسبة إلى بعض أنواع المحتوى، مثل الفيديوهات والصور والخرائط والألعاب، يمكن أن يكون العرض في منطقة الصورة المقطوعة طريقة رائعة لتوفير تجربة أكثر تفاعلية للمستخدمين. من خلال LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
، يمتد المحتوى إلى منطقة الصورة المقطوعة على الحافة القصيرة للشاشة في الوضعَين العمودي والأفقي، بغض النظر عمّا إذا كانت أشرطة النظام مخفية أو مرئية. عند استخدام هذا الوضع، تأكد من عدم تداخل أي محتوى مهم
مع منطقة الصورة المقطوعة.
الصورة التالية هي مثال على LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
لجهاز في الوضع العمودي:
الصورة التالية هي مثال على السمة LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
لجهاز في الوضع الأفقي:
في هذا الوضع، تمتد النافذة أسفل القواطع على الحافة القصيرة للشاشة بالوضع العمودي والأفقي، بغض النظر عمَّا إذا كانت النافذة تخفي أشرطة النظام أم لا.
يعتبر القاطع في الزاوية على الحافة القصيرة:
عدم عرض المحتوى مطلقًا في منطقة الصورة المقطوعة للشاشة
باستخدام LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
، لا يُسمَح أبدًا للنافذة
أن تتداخل مع منطقة الصورة المقطوعة.
إليك مثال على علامة LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
في الوضع العمودي:
في ما يلي مثال على LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
في
الوضع الأفقي:
أفضل الممارسات لإتاحة ظهور الصور المقطوعة للشاشة
عند التعامل مع القواطع للعرض، يجب مراعاة ما يلي:
- ضع في اعتبارك موضع العناصر المهمة في واجهة المستخدم. لا تدع منطقة الصورة المقطوعة تحجب أي نص أو عناصر تحكم أو معلومات أخرى مهمة.
- لا تضع أو توسِّع أي عناصر تفاعلية تتطلب التعرّف عليها بدقة في منطقة الصورة المقطوعة. قد تكون حساسية اللمس أقل في منطقة الصورة المقطوعة.
استخدِم
WindowInsetsCompat
، إن أمكن، لاسترداد ارتفاع شريط الحالة وتحديد المساحة المتروكة المناسبة لتطبيقها على المحتوى. تجنَّب الترميز الثابت لارتفاع شريط الحالة، لأنّ ذلك قد يؤدي إلى التداخل أو اقتطاع المحتوى.استخدِم
View.getLocationInWindow()
لتحديد مقدار مساحة النافذة التي يستخدمها تطبيقك. ولا تفترض أن التطبيق يستخدم النافذة بأكملها، ولا يستخدمView.getLocationOnScreen()
.استخدِم وضع الاقتصاص
shortEdges
أوnever
إذا احتاج تطبيقك إلى الانتقال إلى الوضع المجسم والخروج منه. وقد يؤدي سلوك الاقتطاع التلقائي إلى عرض المحتوى في تطبيقك على منطقة الصورة المقطوعة أثناء وجود أشرطة النظام، ولكن ليس في الوضع المجسم. وينتج عن ذلك انتقال المحتوى لأعلى ولأسفل أثناء الانتقالات، كما هو موضح في المثال التالي.في الوضع المجسم، كن حذرًا عند استخدام إحداثيات النافذة مقابل الشاشة، لأن تطبيقك لا يستخدم الشاشة بأكملها عندما يكون مُعدًّا للعرض على شاشة عريضة أفقيًا. بسبب مربع الحروف، لا تكون الإحداثيات من أصل الشاشة مماثلة للإحداثيات من أصل النافذة. ويمكنك تحويل إحداثيات الشاشة إلى إحداثيات العرض حسب الحاجة باستخدام
getLocationOnScreen()
. توضح الصورة التالية كيف تختلف الإحداثيات عندما يكون المحتوى مُعدًّا للعرض على شاشة عريضة أفقيًا:عند التعامل مع
MotionEvent
، استخدِمMotionEvent.getX()
وMotionEvent.getY()
لتجنُّب مشاكل الإحداثيات المتشابهة. لا تستخدِم السمةMotionEvent.getRawX()
أوMotionEvent.getRawY()
.
اختبار طريقة عرض المحتوى
اختبِر جميع شاشات تطبيقك وتجاربه. اختبر الأمر على الأجهزة التي تحتوي على أنواع مختلفة من القواطع، إن أمكن. إذا لم يكن لديك جهاز به صورة مقطوعة، يمكنك محاكاة إعدادات الاقتصاص الشائعة على أي جهاز أو محاكي يعمل بالإصدار Android 9 أو الإصدارات الأحدث من خلال تنفيذ ما يلي:
- فعِّل خيارات المطوّرين.
- في شاشة خيارات المطوّرين، انتقِل للأسفل إلى قسم الرسم واختَر محاكاة شاشة عرض بها صورة مقطوعة.
اختَر نوع الصورة المقطوعة.