عرض مواضع القطع

الإعلانات

دعم عرض مواضع القطع

 

 

دعم عرض مواضع القطع

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

يدعم الأندرويد رسمياً عرض مواضع القطع على الأجهزة التي تعمل بنظام التشغيل أندرويد 9 (مستوى API 28) وأعلى.

لاحظ أن الشركات المصنعة للأجهزة يمكنها أيضاً إختيار دعم مواضع القطع على الأجهزة التي تعمل بنظام أندرويد 8.1 أو أقل.

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

أي، مستطيل من الحافة إلى الحافة على سطح شاشة العرض التي تحتوي على القطع.

 

 

 

ما يمكن توقعه على الأجهزة التي تحتوي على مواضع قطع على شاشة العرض


لضمان التناسق والتوافق مع التطبيقات، يجب أن تضمن الأجهزة التي تعمل بنظام أندرويد 9 سلوك مواضع القطع التالية:

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

 

 

 

أختر طريقة تعامل تطبيقك مع مواضع القطع


إذا كنت لا تريد أن يتداخل محتواك مع منطقة قطع، فتأكد من أن محتواك لا يتداخل مع شريط الحالة وأن شريط التنقل كافٍ بشكل عام.

إذا كنت تعرض في منطقة القطع، يمكنك إستخدام ()WindowInsets.getDisplayCutout لإسترداد كائن DisplayCutout الذي يحتوي على إدراجات آمنة و مربع محيطي لكل موضع قطع.

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

ملاحظة: لإدارة تنفيذ مواضع القطع خلال مستويات واجهة برمجة التطبيقات المتعددة، يمكنك أيضاً إستخدام DisplayCutoutCompat في مكتبة AndroidX ، والتي تتوفر من خلال مدير SDK.

 

يتيح لك الأندرويد أيضاً إمكانية التحكم في عرض المحتوى داخل منطقة القطع أم لا.

تتحكم سمة مخطط النافذة  layoutInDisplayCutoutMode في كيفية رسم المحتوى بداخل منطقة القطع.

يمكنك تعيين layoutInDisplayCutoutMode إلى إحدى القيم التالية:

1- LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT – هذا هو السلوك الإفتراضي، كما هو موضح أعلاه.

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

2- LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES – يتم عرض المحتوى في منطقة القطع في كل من الإتجاهين الرأسي والأفقي.

3- LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER – لا يتم عرض المحتوى في منطقة القطع أبداً.

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

<style name="ActivityTheme">
  <item name="android:windowLayoutInDisplayCutoutMode">
    shortEdges <!-- default, shortEdges, never -->
  </item>
</style>

 

تصف الأقسام أدناه أوضاع مواضع القطع المختلفة بمزيد من التفصيل.

 

 

 

 

السلوك الإفتراضي


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

ومحتواك سيعرض في المنطقة أدناه. في الوضع الأفقي أو وضع ملء الشاشة، يتم عرض نافذة تطبيقك بشكل الصندوق البريدي بحيث لا يتم عرض أي من محتوياتك في منطقة القطع.

 

 

 

 

عرض المحتوى في مناطق قطع الحافة القصيرة


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

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

بغض النظر عما إذا كانت أشرطة النظام مخفية أم مرئية. لاحظ أن النافذة لا يمكن أن تمتد إلى منطقة القطع على الحواف الطويلة من الشاشة.

عند إستخدام هذا الوضع، تأكد من عدم تداخل أي محتوى هام مع منطقة القطع.

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

قم بتطبيق أي من العلامات التالية على عرض الرؤية من خلال الداله (View.setSystemUiVisibility(int:

  •  SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  •  SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
  •  SYSTEM_UI_FLAG_LAYOUT_STABLE

 

إليك بعض الأمثلة على عرض موضع القطع على الحافه القصيره
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES:

لاحظ أن موضع القطع في الزاوية يعتبر على الحافة القصيرة، لذلك ينطبق عليه نفس السلوك:

عدم عرض المحتوى أبداً في منطقة القطع


بإستخدام LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER ، لن يتم السماح للنوافذ بالتداخل مع منطقة القطع.

يجب إستخدام هذا الوضع مع النوافذ التي تعيّن مؤقتاً View.SYSTEM_UI_FLAG_FULLSCREEN أو View.SYSTEM_UI_FLAG_HIDE_NAVIGATION لتجنب تنفيذ مخطط آخر للنافذة عند تعيين العلامة أو مسحها.

شاهد أمثلة على LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER أدناه:

 

 

 

 

 

الوضع الخاص


تدعم بعض الأجهزة التي تعمل بنظام التشغيل أندرويد 8.1 (مستوى واجهة برمجة التطبيقات 27) أو أقدم..

وضع خاص يتيح للمستخدمين توسيع نطاق الصندوق البريدي بوضع بملء الشاشة أو الإتجاه الأفقي للتطبيق في منطقة القطع.

يتم التحكم في هذا الوضع عادةً بواسطة تبديل في شريط التنقل الذي يعرض مربع حوار يتطلب تأكيد قبل القيام بتمديد الشاشة.

 

 

 

 

أفضل الممارسات لدعم عرض مواضع القطع


عند العمل مع عرض مواضع القطع، تأكد من مراعاة ما يلي:

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

حيثما أمكن، إستخدم WindowInsetsCompat لإسترداد إرتفاع شريط الحالة وتحديد الهوامش المناسبة لتطبيقها على محتواك.

  •  لا تفترض أن التطبيق يحتوي على النافذة بأكملها. بدلاً من ذلك، قم بتأكيد موقعه بإستخدام ()View.getLocationInWindow.

و لا تستخدم ()View.getLocationOnScreen.

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

ولم تقم النافذة بتعيين FLAG_FULLSCREEN أو View.SYSTEM_UI_FLAG_FULLSCREEN ، يمكن أن تمتد النافذة إلى منطقة القطع.

وبالمثل، إذا كانت منطقة القطع في الحافة السفلية ولم تقم النافذة بتعيين View.SYSTEM_UI_FLAG_HIDE_NAVIGATION ..

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

  •  إستخدم أوضاع الحواف القصيرة shortEdges أو لا تستخدم أبداً موضع القطع إذا كان تطبيقك يحتاج للإنتقال إلى ومن وضع ملء الشاشة.

يمكن أن يتسبب السلوك الإفتراضي لموضع القطع في إنتقال محتوى تطبيقك صعودًا ونزولًا أثناء الإنتقالات، كما هو موضح في الصورة أدناه:

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

وبسبب الصندوق البريدي، الإحداثيات من أصل الشاشة لم تعد مطابقة للإحداثيات من أصل النافذة.

يمكنك تحويل إحداثيات الشاشة إلى إحداثيات المعاينه حسب الحاجة بإستخدام ()getLocationOnScreen. توضح الصورة أدناه كيف تختلف الإحداثيات عندما يكون المحتوى في وضع الصندوق البريدي:

عند التعامل مع حدث الحركه MotionEvent، إستخدم ()MotionEvent.getX و ()MotionEvent.getY لتجنب حدوث مشاكل إحداثيات مماثله.

لا تستخدم ()MotionEvent.getRawX أو ()MotionEvent.getRawY.

 

 

 

 

 

إختبار كيفية عرض محتواك


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

إذا لم يكن لديك جهاز به موضع قطع، فيمكنك محاكاة بعض تكوينات القطع الشائعة على أي جهاز أو محاكي يعمل بنظام أندرويد 9 من خلال إجراء ما يلي:

1- تمكين خيارات المطورين.
2- في شاشة خيارات المطورين، قم بالتمرير لأسفل إلى قسم الرسم، وحدد محاكاة العرض مع مواضع القطع.
3-حدد نوع القطع.

 

 

مصادر إضافيه

لمزيد من المعلومات عن دعم عرض مواضع القطع، راجع الروابط التاليه: دعم عرض مواضع القطع دعم عرض مواضع القطع

  • android:windowLayoutInDisplayCutoutMode
  • DisplayCutout
  • layoutInDisplayCutoutMode
  • WindowInsets
  • ()WindowInsets.getDisplayCutout

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات

اترك رد