Split Screen — چیست، حالت دو برنامه روی صفحه

نویسنده: IT Sectr منتشر شده: 2026-06-08 زمان مطالعه: 9 دقیقه

Split Screen — حالت صفحه تقسیم‌شده است که به شما امکان می‌دهد همزمان دو برنامه را در کنار هم اجرا کنید و فضای موجود را تقسیم کنید. کاربر می‌تواند جداکننده را بین پنجره‌ها بکشد، نسبت‌ها را تغییر دهد و به سرعت برنامه‌ها را در هر نیمه جابجا کند. به گفته Android Developers (2025)، Split Screen بخشی از برنامه سازگاری اجباری برای همه دستگاه‌هایی با عرض صفحه از 600 dp است و هم در اندروید و هم در iPadOS پشتیبانی می‌شود.

نکات مهم

  • Split Screen — دو برنامه روی صفحه با جداکننده قابل کشیدن.
  • Android Split Screen — از اندروید 7.0 کار می‌کند، از طریق Overview فعال می‌شود.
  • iPad Split View — حالت مشابه در iPadOS با سه موقعیت جداکننده.
  • سازگاری — برنامه باید تغییر اندازه پنجره را مدیریت کرده و وضعیت را ذخیره کند.
  • حداقل عرض — پنجره برنامه در Split Screen می‌تواند تا 220 dp کاهش یابد.

Split Screen چیست؟

Split Screen — یک حالت چندوظیفه‌ای است که در آن صفحه به دو ناحیه عملکردی تقسیم می‌شود که هر کدام یک برنامه مجزا را شامل می‌شود. برخلاف Slide Over یا PiP که در آن یک پنجره روی دیگری شناور است، Split Screen به هر دو برنامه وضعیت برابر می‌دهد — هر کدام نیمه خود را دریافت می‌کند.

این حالت در اندروید (از 7.0 Nougat)، iPadOS (از iOS 9)، ویندوز (Snap Assist) و برخی محیط‌های دسکتاپ لینوکس در دسترس است. در توسعه موبایل، Split Screen یک سناریوی اجباری برای تبلت‌ها و دستگاه‌های تاشو محسوب می‌شود، جایی که چندوظیفه‌ای مزیت کلیدی پلتفرم است.

کاربر Split Screen را با فشار طولانی روی آیکون برنامه در Overview (اندروید) یا کشیدن از Dock (آیپد) فعال می‌کند. پس از فعال‌سازی، صفحه تقسیم می‌شود و کاربر برنامه دوم را از لیست اخیرها یا از Dock انتخاب می‌کند.

Split Screen در اندروید: چگونه کار می‌کند

در اندروید، Split Screen از طریق Window Manager مدیریت می‌شود. وقتی کاربر حالت را فعال می‌کند، سیستم دو StackView ایجاد می‌کند — یکی برای هر Activity. جداکننده بین پنجره‌ها توسط سیستم رسم می‌شود، حداقل ضخامت آن 1 dp است، اما می‌تواند در دستگاه‌های دارای Gesture Navigation افزایش یابد.

هر برنامه از طریق onConfigurationChanged اعلان تغییر اندازه دریافت می‌کند. اگر Activity این رویداد را مدیریت نکند — نابود شده و دوباره ایجاد می‌شود. برای فیلم‌ها و بازی‌ها این حیاتی است: ایجاد مجدد Activity موقعیت پخش یا وضعیت بازی را بازنشانی می‌کند.

نسبت پنجره‌ها را می‌توان با کشیدن جداکننده تغییر داد. اندروید سه حالت را پشتیبانی می‌کند: 50/50، 70/30 و 30/70. کاربر همچنین می‌تواند برنامه‌ها را جابجا کند — این باعث راه‌اندازی مجدد Activity می‌شود اگر configChanges مدیریت نشود.

Split View در iPadOS: ویژگی‌ها

Split View — پیاده‌سازی Split Screen در iPadOS است. برخلاف اندروید که تقسیم صفحه همیشه از مرکز انجام می‌شود، iPadOS سه موقعیت جداکننده به کاربر ارائه می‌دهد: 50/50، 25/75 و 75/25. حالت از طریق Dock یا App Exposé فعال می‌شود.

در iPadOS، برنامه در Split View می‌تواند به Slide Over — یک پنجره شناور — کوچک شود. این ویژگی منحصربه‌فرد اپل است: کاربر می‌تواند یکی از پنجره‌ها را از Split View به Slide Over تبدیل کرده و بدون از دست دادن داده‌ها برگرداند. توسعه‌دهنده باید هر سه حالت را پشتیبانی کند: full screen، Split View و Slide Over.

برای پشتیبانی از Split View در iOS، برنامه باید Layoutهای تطبیقی را از طریق Size Classes و صحنه (UIScene) پیاده‌سازی کند. از iOS 13، اپل الزام می‌کند که برنامه حالت چندپنجره‌ای را به درستی مدیریت کند — در غیر این صورت سیستم ممکن است Activity را در آیپد به‌اجبار راه‌اندازی مجدد کند.

مدیریت تغییرات پیکربندی

هنگام ورود به Split Screen و خروج از آن، تغییرات پیکربندی رخ می‌دهد: عرض، ارتفاع و نسبت ابعاد پنجره تغییر می‌کند. رفتار استاندارد اندروید — ایجاد مجدد Activity (onDestroy + onCreate). برای جلوگیری از این کار، android:configChanges را در مانیفست مشخص کنید.

هنگام ایجاد مجدد Activity، وضعیت View و ViewModel از دست می‌رود. برای ذخیره وضعیت UI از SavedStateHandle یا ViewModel با محدوده Application استفاده کنید. جایگزین — onRetainNonConfigurationInstance() برای اشیاء پیچیده.

kotlin
@Override
fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    val isSplitScreen = isInMultiWindowMode()
    if (isSplitScreen) {
        adjustLayoutForSplitScreen()
    }
}

در iPadOS مکانیزم مشابه — traitCollectionDidChange یا viewWillTransitionToSize. توسعه‌دهنده اندازه جدید کانتینر را دریافت می‌کند و باید Layout را مطابق با Size Class بازسازی کند.

پشتیبانی از Split Screen در کد

در اندروید، پشتیبانی از Split Screen با تنظیم پرچم resizeableActivity در مانیفست شروع می‌شود. پس از آن، Activity می‌تواند تا حداقل عرض 220 dp کاهش یابد. اگر برنامه چنین صفحه باریکی را پشتیبانی نمی‌کند — android:minWidth را در مانیفست مشخص کنید.

برای آیپد، توسعه‌دهنده باید Size Classes را پشتیبانی کرده و از Auto Layout یا SwiftUI استفاده کند. SwiftUI هنگام انتقال به Split View به طور خودکار رابط را تطبیق می‌دهد — برای مثال، NavigationSplitView بین حالت‌های stacked و side-by-side جابجا می‌شود.

توصیه می‌شود Split Screen را روی دستگاه‌های واقعی یا در شبیه‌ساز با تنظیم multi-resizable window آزمایش کنید. Android Emulator به شما امکان می‌دهد از طریق ADB تعداد دلخواه پنجره را اجرا کرده و رفتار برنامه را در نسبت‌های مختلف بررسی کنید.

پلتفرممکانیزم تطبیقحداقل عرض
اندرویدresizeableActivity + configChanges220 dp
iPadOSSize Classes + UIScene320 pt (primary)

اشتباهات رایج در پیاده‌سازی

اشتباه اول — نادیده گرفتن ذخیره وضعیت. در Split Screen، Activity می‌تواند در هر لحظه بدون دخالت کاربر دوباره ایجاد شود. اگر داده‌ها فقط در متغیرهای محلی ذخیره شوند — از دست می‌روند. برای داده‌های صفحه از ViewModel و برای وضعیت‌های بحرانی از SavedStateHandle استفاده کنید.

اشتباه دوم — پنهان کردن محتوا هنگام کوچک شدن پنجره. برخی توسعه‌دهندگان وقتی عرض از آستانه خاصی کمتر می‌شود، عناصر را مخفی می‌کنند. رویکرد صحیح — بازسازی Layout: در صفحه باریک فقط مهم‌ترین موارد را نشان دهید، نه اینکه همه چیز را مخفی کنید. Window Size Class نقاط شکست آماده برای این منطق ارائه می‌دهد.

اشتباه سوم — مدیریت نکردن onWindowFocusChanged. در Split Screen، فوکوس می‌تواند بدون بستن برنامه بین پنجره‌ها جابجا شود. نادیده گرفتن این رویداد باعث توقف پخش ویدیو می‌شود وقتی کاربر فقط به پنجره مجاور نگاه کرد.

سوالات متداول

چگونه یک برنامه را به صورت برنامه‌ریزی شده در Split Screen اجرا کنیم؟

از Intent با FLAG_ACTIVITY_LAUNCH_ADJACENT استفاده کنید. اگر دستگاه در حالت Split Screen است، برنامه در پنجره مجاور باز می‌شود. اگر دستگاه در حالت تمام‌صفحه است — پرچم نادیده گرفته می‌شود.

آیا چرخه حیات Activity در Split Screen متفاوت است؟

بله. Activity قابل مشاهده باقی می‌ماند اما فوکوس را از دست می‌دهد — onPause فراخوانی می‌شود، اما onStop فراخوانی نمی‌شود. هنگام خروج از Split Screen، onMultiWindowModeChanged و سپس onResume فراخوانی می‌شود.

چگونه عرض پنجره را در Split Screen بررسی کنیم؟

از WindowManager.getCurrentWindowMetrics() یا Jetpack WindowManager استفاده کنید. از Display.getSize() استفاده نکنید — کل صفحه را برمی‌گرداند، نه پنجره فعلی برنامه را.

آیا Split Screen در دستگاه‌های تاشو پشتیبانی می‌شود؟

بله. در دستگاه باز شده، Split Screen اغلب حالت پیش‌فرض است. Samsung Galaxy Z Fold در حالت افقی Split Screen با سه برنامه همزمان ارائه می‌دهد.

چگونه Split Screen را برای یک Activity خاص غیرفعال کنیم؟

android:resizeableActivity="false" را برای آن Activity تنظیم کنید. برای API 24+، پرچم Split Screen را ممنوع می‌کند. در اندروید 12L+ از android:minWidth و android:minHeight استفاده کنید.

خلاصه

  • Split Screen — حالت دو برنامه روی صفحه، قابل دسترس در اندروید و iPadOS.
  • اندروید — از طریق resizeableActivity + onConfigurationChanged کار می‌کند.
  • iPadOS — Split View با سه موقعیت جداکننده، تبدیل به Slide Over.
  • تطبیق — مدیریت تغییر اندازه از طریق configChanges یا ایجاد مجدد.
  • ذخیره وضعیت — ViewModel و SavedStateHandle برای Split Screen ضروری هستند.
  • تست — حداقل عرض 220 dp در اندروید، 320 pt در آیپد.
  • نتیجه‌گیری — Split Screen یک حالت اجباری برای تبلت‌ها و دستگاه‌های تاشو است که نیاز به پیاده‌سازی چرخه حیات و Layoutهای تطبیقی دارد.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید