الفتحة في الشاشة هي منطقة على بعض الأجهزة تمتد إلى سطح الشاشة. يتيح ذلك تجربة مليئة بالشاشة مع توفير مساحة ل أجهزة الاستشعار المهمة في مقدمة الجهاز.
يتيح نظام التشغيل Android استخدام أجزاء الشاشة المُخصّصة للكاميرات على الأجهزة التي تعمل بالإصدار 9 من Android (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث. ومع ذلك، يمكن لصنّاع الأجهزة أيضًا توفير ميزة "فتحات الشاشة" على الأجهزة التي تعمل بالإصدار 8.1 من نظام التشغيل Android أو إصدارات أقدم.
توضِّح هذه الصفحة كيفية توفير إمكانية استخدام التطبيقات على الأجهزة التي تتضمّن مساحة مخصّصة للكاميرا الأمامية في Compose، بما في ذلك كيفية التعامل مع مساحة الفتحة، أي المستطيل الذي يمتد من الحافة إلى الحافة على سطح الشاشة ويحتوي على الفتحة.
الحالة التلقائية
يتم تلقائيًا تضمين فتحات الشاشة في معلومات "أجزاء النافذة المُدمَجة". لهذا السبب، لن يرسم تطبيقك مناطق الفتحات في الشاشة عند اتّباع الدليل حول عرض تطبيقك من الحافة إلى الحافة.
على سبيل المثال، عند استخدام
Modifier.windowInsetsPadding(WindowInsets.safeContent)
أو Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
، لن يرسم تطبيقك
تلقائيًا في المناطق التي تم وضع عنصر مقطوع فيها.
يحتوي كل من WindowInsets.safeContent
وWindowInsets.safeDrawing
على معلومات حول فتحة الشاشة ولن يتم رسم مكان فتحة الجهاز.
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) setContent { Box(Modifier.windowInsetsPadding(WindowInsets.safeContent)) { // Any composable inside here will avoid drawing behind cutouts } } }
لتخصيص هذا السلوك بشكل أكبر، عليك التعامل مع معلومات الاقتصاص بنفسك.
التعامل مع معلومات الاقتصاص يدويًا
يمكنك التعامل مع الصور المقتطعة بأيّ من الطرق التالية:
استخدام
WindowInsets.displayCutout
الإعداد في بيان المظهر باستخدام
android:windowLayoutInDisplayCutoutMode
ضبط الخيار آليًا على
Window
باستخدامwindow.attributes.layoutInDisplayCutoutMode
الوصول إلى عنصر الفتحة
Path
باستخدامLocalView.current.rootWindowInsets.displayCutout
بالنسبة إلى ميزة "الإنشاء"، ننصحك بضبط windowLayoutInDisplayCutoutMode
على
default
في المظهر العام، ثم الاستفادة من WindowInsets.displayCutout
لمعالجة العناصر المضمّنة في العناصر القابلة للإنشاء:
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
يتيح لك هذا الأسلوب مراعاة سمة الحشو displayCutout
عند الحاجة،
أو تجاهلها عندما لا تكون مطلوبة.
بدلاً من ذلك، يمكنك تطبيق الإعدادات نفسها التي تصفها مستندات اقتصاص المرئيات من خلال ضبط
موضوع النشاط android:windowLayoutInDisplayCutoutMode
على خيار
آخر، أو ضبط سمة النافذة باستخدام
window.attributes.layoutInDisplayCutoutMode =
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
. ومع ذلك، يتم تطبيق وضع الاقتصاص بعد ذلك
على نشاط كامل، ولا يمكن التحكّم فيه لكل عنصر فردي قابل للتركيب.
لاحترام مساحة الشاشة المُخصّصة للعرض في بعض العناصر المُركّبة وليس غيرها، استخدِم
WindowInset.displayCutout
. تتيح لك واجهة برمجة التطبيقات هذه الوصول إلى معلومات الاقتصاص
عند الحاجة.
أفضل الممارسات
عند العمل مع أجزاء الشاشة المُقتطعة، يُرجى مراعاة ما يلي:
- انتبِه إلى موضع العناصر المهمة في واجهة المستخدم. لا تسمح لمنطقة القص بالتداخل مع أي نص أو عناصر تحكّم أو معلومات مهمة أخرى.
- لا تضع أو توسِّع أي عناصر تفاعلية تتطلّب دقة في اللمس للتعرّف عليها في منطقة الاقتصاص. قد تكون حساسية اللمس أقل في منطقة الفتحة.
- عند اتّباع الإرشادات المتعلقة بالعرض على الشاشة بالكامل، يتم تضمين معلومات الفتحة في
العناصر المضمّنة
safeDrawing
/safeContent
. - استخدِم
Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
لتحديد مقدار المسافة البادئة المناسبة لتطبيقها على المحتوى، إن أمكن. تجنَّب الترميز الثابت لارتفاع شريط الحالة، لأنّ ذلك قد يؤدي إلى تداخل المحتوى أو اقتصاصه.
اختبار كيفية عرض المحتوى باستخدام العناصر المخصّصة
احرص على اختبار جميع شاشات تطبيقك وتجاربه. يُرجى إجراء الاختبار على الأجهزة التي تتضمّن أنواعًا مختلفة من الفتحات، إن أمكن. إذا لم يكن لديك جهاز يحتوي على فتحة، يمكنك محاكاة إعدادات الفتحات الشائعة على أي جهاز أو محاكي يعمل بنظام التشغيل Android 9 أو إصدار أحدث باتّباع الخطوات التالية:
- فعِّل خيارات المطوّرين.
- في شاشة خيارات المطوّرين، انتقِل للأسفل إلى قسم الرسم واختَر محاكاة شاشة تتضمّن مساحة مقطوعة.
- اختَر نوع الصورة المُقتطعة.
أفلام مُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما تكون لغة JavaScript غير مفعّلة.
- أجزاء النافذة المضمّنة في ميزة "الإنشاء"
- مُعدِّلات الرسومات
- نمط الفقرة