Split Screen هو وضع الشاشة المقسمة الذي يسمح بتشغيل تطبيقين في وقت واحد جنباً إلى جنب، مع تقسيم المساحة المتاحة. يمكن للمستخدم سحب الفاصل بين النوافذ وتغيير النسب والتبديل بسرعة بين التطبيقات في كل نصف. وفقاً لـ Android Developers (2025)، فإن Split Screen جزء من برنامج التوافق الإلزامي لجميع الأجهزة التي يبلغ عرض شاشتها 600 dp فأكثر، وهو مدعوم على كل من Android وiPadOS.
الملامح الرئيسية
Split Screen هو وضع تعدد المهام حيث تنقسم الشاشة إلى منطقتين وظيفيتين، كل منهما تحتوي على تطبيق منفصل. على عكس Slide Over أو PiP، حيث تطفو نافذة فوق أخرى، يمنح Split Screen كلا التطبيقين مكانة متساوية — يحصل كل منهما على نصف الشاشة الخاص به.
يتوفر الوضع على Android (منذ 7.0 Nougat) وiPadOS (منذ iOS 9) وWindows (Snap Assist) وبعض بيئات سطح المكتب Linux. في تطوير التطبيقات المحمولة، يعتبر Split Screen سيناريو إلزامياً للأجهزة اللوحية والقابلة للطي، حيث أن تعدد المهام ميزة أساسية للنظام الأساسي.
يقوم المستخدم بتفعيل Split Screen بالضغط المطول على أيقونة التطبيق في Overview (Android) أو بالسحب من Dock (iPad). بعد التفعيل، تنقسم الشاشة ويختار المستخدم التطبيق الثاني من القائمة الحديثة أو من Dock.
في Android، تتم إدارة Split Screen عبر Window Manager. عندما يقوم المستخدم بتفعيل الوضع، ينشئ النظام StackView — واحد لكل Activity. يتم عرض الفاصل بين النوافذ بواسطة النظام، بسمك أدنى يبلغ 1 dp، وقد يزداد على الأجهزة المزودة بـ Gesture Navigation.
يتلقى كل تطبيق إشعاراً بتغيير الحجم عبر onConfigurationChanged. إذا لم تعالج Activity هذا الحدث، يتم إتلافها وإعادة إنشائها. بالنسبة للفيديو والألعاب، هذا أمر بالغ الأهمية: إعادة إنشاء Activity يعيد تعيين موضع التشغيل أو حالة اللعبة.
يمكن تغيير نسب النوافذ بسحب الفاصل. يدعم Android ثلاث حالات: 50/50 و70/30 و30/70. يمكن للمستخدم أيضاً تبديل التطبيقات، مما يؤدي إلى إعادة تشغيل Activity إذا لم تتم معالجة configChanges.
Split View هو تطبيق Split Screen في iPadOS. على عكس Android، حيث يبدأ تقسيم الشاشة دائماً من المنتصف، يقدم iPadOS للمستخدم ثلاثة أوضاع للفاصل: 50/50 و25/75 و75/25. يتم تفعيل الوضع عبر Dock أو App Exposé.
في iPadOS، يمكن طي التطبيق في Split View إلى Slide Over — نافذة عائمة. هذه ميزة فريدة من Apple: يمكن للمستخدم تحويل إحدى النوافذ من Split View إلى Slide Over والعكس دون فقدان البيانات. يجب على المطور دعم جميع الأوضاع الثلاثة: ملء الشاشة وSplit View وSlide Over.
لدعم Split View في iOS، يجب أن ينفذ التطبيق تخطيطات متكيفة عبر Size Classes والمشهد (UIScene). منذ iOS 13، تطلب Apple من التطبيق معالجة وضع النوافذ المتعددة بشكل صحيح — وإلا قد يقوم النظام بإعادة تشغيل Activity قسراً على iPad.
عند الدخول إلى Split Screen والخروج منه، تحدث تغييرات في التكوين: يتغير عرض النافذة وارتفاعها ونسبة أبعادها. السلوك القياسي لنظام Android هو إعادة إنشاء Activity (onDestroy + onCreate). لتجنب ذلك، حدد android:configChanges في البيان.
عند إعادة الإنشاء، تفقد Activity حالة View وViewModel. استخدم SavedStateHandle لحفظ حالة واجهة المستخدم أو ViewModel بنطاق Application. بديل لذلك هو onRetainNonConfigurationInstance() للكائنات المعقدة.
@Override
fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
val isSplitScreen = isInMultiWindowMode()
if (isSplitScreen) {
adjustLayoutForSplitScreen()
}
}
في iPadOS، الآلية المكافئة هي traitCollectionDidChange أو viewWillTransitionToSize. يتلقى المطور حجم الحاوية الجديد ويجب عليه إعادة بناء التخطيط وفقاً لـ Size Class.
على Android، يبدأ دعم Split Screen بتعيين العلم resizeableActivity في البيان. بعد ذلك، يمكن أن تتقلص Activity إلى عرض أدنى يبلغ 220 dp. إذا كان التطبيق لا يدعم شاشة ضيقة جداً، حدد android:minWidth في البيان.
بالنسبة لـ iPad، يحتاج المطور فقط إلى دعم Size Classes واستخدام Auto Layout أو SwiftUI. SwiftUI يكيّف الواجهة تلقائياً عند الدخول إلى Split View — على سبيل المثال، يتحول NavigationSplitView بين الأوضاع المكدسة والجانبية.
يوصى باختبار Split Screen على أجهزة حقيقية أو في محاكي مع إعداد نافذة متعددة قابلة للتغيير. يسمح محاكي Android بتشغيل أي عدد من النوافذ عبر ADB والتحقق من سلوك التطبيق بنسب مختلفة.
| النظام الأساسي | آلية التكيف | الحد الأدنى للعرض |
|---|---|---|
| Android | resizeableActivity + configChanges | 220 dp |
| iPadOS | Size Classes + UIScene | 320 pt (أساسي) |
الخطأ الأول هو تجاهل الحفاظ على الحالة. في Split Screen، يمكن إعادة إنشاء Activity في أي لحظة دون تدخل المستخدم. إذا كانت البيانات مخزنة فقط في متغيرات محلية، فستفقد. استخدم ViewModel لبيانات الشاشة وSavedStateHandle للحالات الحرجة.
الخطأ الثاني هو إخفاء المحتوى عند تصغير النافذة. يقوم بعض المطورين بإخفاء العناصر عندما يقل العرض عن حد معين. النهج الصحيح هو إعادة بناء التخطيط: على الشاشة الضيقة، أظهر فقط الأهم بدلاً من إخفاء كل شيء. توفر Window Size Class نقاط فاصلة جاهزة لهذا المنطق.
الخطأ الثالث هو عدم معالجة onWindowFocusChanged. في Split Screen، يمكن أن يتحول التركيز بين النوافذ دون إغلاق التطبيق. يؤدي تجاهل هذا الحدث إلى توقف مشغل الفيديو عندما ينظر المستخدم ببساطة إلى النافذة المجاورة.
الأسئلة الشائعة
استخدم Intent مع FLAG_ACTIVITY_LAUNCH_ADJACENT. إذا كان الجهاز في وضع Split Screen، سيفتح التطبيق في النافذة المجاورة. إذا كان الجهاز في وضع ملء الشاشة، يتم تجاهل العلم.
نعم. تبقى Activity مرئية لكنها تفقد التركيز — يتم استدعاء onPause، ولكن ليس onStop. عند الخروج من Split Screen، يتم استدعاء onMultiWindowModeChanged ثم onResume.
استخدم WindowManager.getCurrentWindowMetrics() أو Jetpack WindowManager. لا تستخدم Display.getSize() — فهو يعيد الشاشة الكاملة، وليس نافذة التطبيق الحالية.
نعم. على الجهاز في الحالة المفتوحة، غالباً ما يكون Split Screen هو الوضع الافتراضي. يقدم Samsung Galaxy Z Fold في الوضع الأفقي Split Screen مع ثلاثة تطبيقات في وقت واحد.
قم بتعيين android:resizeableActivity="false" لذلك Activity. بالنسبة لـ API 24+، هذا العلم يعطل Split Screen. على Android 12L+، استخدم android:minWidth وandroid:minHeight.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا