Split Screen — to tryb podzielonego ekranu, który pozwala uruchamiać dwie aplikacje jednocześnie obok siebie, dzieląc dostępne miejsce. Użytkownik może przeciągać separator między oknami, zmieniać proporcje i szybko przełączać aplikacje w każdej połowie. Według Android Developers (2025), Split Screen jest częścią obowiązkowego programu zgodności dla wszystkich urządzeń o szerokości ekranu od 600 dp i jest obsługiwany zarówno na Androidzie, jak i na iPadOS.
Najważniejsze
Split Screen — to tryb wielozadaniowości, w którym ekran dzieli się na dwa obszary funkcjonalne, z których każdy zawiera oddzielną aplikację. W przeciwieństwie do Slide Over lub PiP, gdzie jedno okno unosi się nad drugim, Split Screen daje obu aplikacjom równy status — każda otrzymuje swoją połowę ekranu.
Tryb jest dostępny na Androidzie (od 7.0 Nougat), iPadOS (od iOS 9), Windows (Snap Assist) i niektórych środowiskach desktopowych Linux. W programowaniu mobilnym Split Screen jest uważany za obowiązkowy scenariusz dla tabletów i urządzeń składanych, gdzie wielozadaniowość jest kluczową zaletą platformy.
Użytkownik aktywuje Split Screen przez długie przytrzymanie ikony aplikacji w Overview (Android) lub przez przeciągnięcie z Docka (iPad). Po aktywacji ekran dzieli się, a użytkownik wybiera drugą aplikację z listy ostatnich lub z Docka.
W Androidzie Split Screen jest zarządzany przez Window Manager. Gdy użytkownik aktywuje tryb, system tworzy dwa StackView — po jednym dla każdego Activity. Separator między oknami jest rysowany przez system, jego minimalna grubość to 1 dp, ale może być zwiększona na urządzeniach z Gesture Navigation.
Każda aplikacja otrzymuje powiadomienie o zmianie rozmiaru przez onConfigurationChanged. Jeśli Activity nie obsługuje tego zdarzenia — jest niszczone i tworzone od nowa. Dla filmów i gier jest to krytyczne: ponowne utworzenie Activity resetuje pozycję odtwarzania lub stan gry.
Proporcje okien można zmieniać przeciągając separator. Android obsługuje trzy stany: 50/50, 70/30 i 30/70. Użytkownik może również zamienić aplikacje miejscami — powoduje to restart Activity, jeśli nie obsługuje się configChanges.
Split View — to implementacja Split Screen w iPadOS. W przeciwieństwie do Androida, gdzie podział ekranu zawsze idzie od środka, iPadOS oferuje użytkownikowi trzy pozycje separatora: 50/50, 25/75 i 75/25. Tryb aktywuje się przez Dock lub App Exposé.
W iPadOS aplikacja w Split View może być zwinięta do Slide Over — pływającego okna. To unikalna cecha Apple: użytkownik może przekształcić jedno z okien z Split View w Slide Over i z powrotem bez utraty danych. Deweloper musi obsługiwać wszystkie trzy tryby: full screen, Split View i Slide Over.
Aby obsługiwać Split View w iOS, aplikacja musi zaimplementować adaptacyjne layouty przez Size Classes i scenę (UIScene). Od iOS 13 Apple wymaga, aby aplikacja poprawnie obsługiwała tryb wielookienkowy — w przeciwnym razie system może wymusić restart Activity na iPadzie.
Przy wejściu w Split Screen i wyjściu z niego następują zmiany konfiguracji: zmienia się szerokość, wysokość i proporcje okna. Standardowe zachowanie Androida — ponowne utworzenie Activity (onDestroy + onCreate). Aby tego uniknąć, określ android:configChanges w manifeście.
Przy ponownym tworzeniu Activity traci stan View i ViewModel. Użyj SavedStateHandle do zapisania stanu UI lub ViewModel z ograniczeniem zakresu do Application. Alternatywa — onRetainNonConfigurationInstance() dla złożonych obiektów.
@Override
fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
val isSplitScreen = isInMultiWindowMode()
if (isSplitScreen) {
adjustLayoutForSplitScreen()
}
}
W iPadOS analogiczny mechanizm — traitCollectionDidChange lub viewWillTransitionToSize. Deweloper otrzymuje nowy rozmiar kontenera i musi przebudować layout zgodnie z Size Class.
Na Androidzie wsparcie Split Screen zaczyna się od ustawienia flagi resizeableActivity w manifeście. Po tym Activity może zmniejszać się do minimalnej szerokości 220 dp. Jeśli aplikacja nie obsługuje tak wąskiego ekranu — określ android:minWidth w manifeście.
Dla iPad deweloperowi wystarczy obsługiwać Size Classes i używać Auto Layout lub SwiftUI. SwiftUI automatycznie adaptuje interfejs przy przejściu w Split View — na przykład NavigationSplitView przełącza się między trybami stacked i side-by-side.
Zaleca się testowanie Split Screen na rzeczywistych urządzeniach lub w emulatorze z ustawieniem multi-resizable window. Android Emulator pozwala uruchomić dowolną liczbę okien przez ADB i sprawdzić zachowanie aplikacji w różnych proporcjach.
| Platforma | Mechanizm adaptacji | Minimalna szerokość |
|---|---|---|
| Android | resizeableActivity + configChanges | 220 dp |
| iPadOS | Size Classes + UIScene | 320 pt (primary) |
Pierwszy błąd — ignorowanie zapisywania stanu. W Split Screen Activity może zostać ponownie utworzone w dowolnym momencie bez udziału użytkownika. Jeśli dane są przechowywane tylko w zmiennych lokalnych — zostaną utracone. Używaj ViewModel do danych ekranowych i SavedStateHandle do krytycznych stanów.
Drugi błąd — ukrywanie treści przy zmniejszaniu okna. Niektórzy programiści chowają elementy, gdy szerokość spada poniżej pewnego progu. Prawidłowe podejście — przebudowa layoutu: na wąskim ekranie pokazuj tylko najważniejsze rzeczy, a nie ukrywaj wszystkiego. Window Size Class dostarcza gotowych breakpointów dla tej logiki.
Trzeci błąd — nieobsługiwanie onWindowFocusChanged. W Split Screen fokus może przełączać się między oknami bez zamykania aplikacji. Ignorowanie tego zdarzenia prowadzi do zatrzymania odtwarzacza wideo, gdy użytkownik po prostu spojrzał na sąsiednie okno.
Często zadawane pytania
Użyj Intent z FLAG_ACTIVITY_LAUNCH_ADJACENT. Jeśli urządzenie jest w trybie Split Screen, aplikacja otworzy się w sąsiednim oknie. Jeśli urządzenie jest w trybie pełnoekranowym — flaga jest ignorowana.
Tak. Activity pozostaje widoczne, ale traci fokus — wywoływane jest onPause, ale nie onStop. Przy wyjściu z Split Screen wywoływane jest onMultiWindowModeChanged, a następnie onResume.
Użyj WindowManager.getCurrentWindowMetrics() lub Jetpack WindowManager. Nie używaj Display.getSize() — zwraca pełny ekran, a nie bieżące okno aplikacji.
Tak. Na urządzeniu w stanie rozłożonym Split Screen jest często trybem domyślnym. Samsung Galaxy Z Fold w trybie poziomym oferuje Split Screen z trzema aplikacjami jednocześnie.
Ustaw android:resizeableActivity="false" dla tego Activity. Dla API 24+ flaga zabrania Split Screen. Na Androidzie 12L+ użyj android:minWidth i android:minHeight.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również