لمحة عن الصور المخصّصة

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

مثال على اقتصاص في وضع "بورتريه"
الشكل 1 مثال على اقتصاص الصورة في وضع "بورتريه"
مثال على اقتصاص الشاشة في الوضع الأفقي
الشكل 2. مثال على اقتصاص الشاشة في الوضع الأفقي

يتيح Android استخدام الصور المقطوعة للشاشة على الأجهزة التي تعمل بنظام التشغيل Android 9 (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث. ومع ذلك، يمكن للشركات المصنّعة للأجهزة أيضًا إتاحة الصور المقطوعة للشاشة على الأجهزة التي تعمل بنظام التشغيل Android 8.1 أو الإصدارات الأقدم.

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

الحالة التلقائية

بالنسبة إلى التطبيقات التي تستهدف المستوى 34 أو أقل من واجهة برمجة التطبيقات، أو الأنشطة التي لا تستدعي enableEdgeToEdge، لن يتم الرسم في منطقة الصورة المقطوعة تلقائيًا ما لم يرسم التطبيق في شريط نظام يحتوي على الصورة المقطوعة للشاشة.

بالنسبة إلى التطبيقات التي تستهدف المستوى 35 من واجهة برمجة التطبيقات أو الإصدارات الأحدث على الأجهزة التي تعمل بنظام التشغيل Android 15 أو الإصدارات الأحدث، أو الأنشطة التي تستدعي enableEdgeToEdge، يتم الرسم في منطقة القطع.

بعبارة أخرى، يتم تفسير LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT وLAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES وLAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER على أنّها LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS للنوافذ غير العائمة في التطبيقات التي تستهدف المستوى 35 من واجهة برمجة التطبيقات أو الإصدارات الأحدث على الأجهزة التي تعمل بنظام التشغيل Android 15 أو الإصدارات الأحدث.

التعامل مع معلومات الجزء المقتطع يدويًا

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

بالنسبة إلى Compose، ننصحك باستخدام displayCutout أو safeContent أو safeDrawing للتعامل مع الأجزاء المقتطعة في الدوال المركّبة. يتيح لك هذا الأسلوب مراعاة مساحة العرض المقطوعة عند الحاجة، أو تجاهلها في حال عدم الحاجة إليها.

Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) {
    drawRect(Color.Red, style = Stroke(2.dp.toPx()))
}