Split Screen là chế độ màn hình chia đôi cho phép chạy hai ứng dụng cùng lúc cạnh nhau, chia sẻ không gian có sẵn. Người dùng có thể kéo thanh phân cách giữa các cửa sổ, thay đổi tỷ lệ và nhanh chóng chuyển đổi ứng dụng ở mỗi nửa. Theo Android Developers (2025), Split Screen là một phần của chương trình tương thích bắt buộc cho tất cả thiết bị có chiều rộng màn hình từ 600 dp trở lên và được hỗ trợ trên cả Android và iPadOS.
Những điểm chính
Split Screen là chế độ đa nhiệm trong đó màn hình được chia thành hai khu vực chức năng, mỗi khu vực chứa một ứng dụng riêng biệt. Không giống như Slide Over hay PiP, nơi một cửa sổ nổi trên cửa sổ khác, Split Screen cho cả hai ứng dụng trạng thái ngang nhau — mỗi ứng dụng nhận một nửa màn hình.
Chế độ này có sẵn trên Android (từ 7.0 Nougat), iPadOS (từ iOS 9), Windows (Snap Assist) và một số môi trường máy tính để bàn Linux. Trong phát triển di động, Split Screen được coi là kịch bản bắt buộc cho máy tính bảng và thiết bị gập, nơi đa nhiệm là lợi thế chính của nền tảng.
Người dùng kích hoạt Split Screen bằng cách nhấn giữ biểu tượng ứng dụng trong Overview (Android) hoặc kéo từ Dock (iPad). Sau khi kích hoạt, màn hình được chia và người dùng chọn ứng dụng thứ hai từ danh sách gần đây hoặc từ Dock.
Trên Android, Split Screen được quản lý qua Window Manager. Khi người dùng kích hoạt chế độ, hệ thống tạo hai StackView — một cho mỗi Activity. Thanh phân cách giữa các cửa sổ được hệ thống hiển thị, với độ dày tối thiểu 1 dp, có thể tăng lên trên các thiết bị có Gesture Navigation.
Mỗi ứng dụng nhận được thông báo thay đổi kích thước qua onConfigurationChanged. Nếu Activity không xử lý sự kiện này, nó sẽ bị hủy và tạo lại. Đối với video và trò chơi, điều này rất quan trọng: tạo lại Activity sẽ đặt lại vị trí phát lại hoặc trạng thái trò chơi.
Tỷ lệ cửa sổ có thể thay đổi bằng cách kéo thanh phân cách. Android hỗ trợ ba trạng thái: 50/50, 70/30 và 30/70. Người dùng cũng có thể hoán đổi ứng dụng, điều này kích hoạt khởi động lại Activity nếu configChanges không được xử lý.
Split View là triển khai Split Screen trên iPadOS. Không giống như Android, nơi việc chia màn hình luôn bắt đầu từ trung tâm, iPadOS cung cấp cho người dùng ba vị trí thanh phân cách: 50/50, 25/75 và 75/25. Chế độ được kích hoạt qua Dock hoặc App Exposé.
Trên iPadOS, một ứng dụng trong Split View có thể được thu gọn thành Slide Over — một cửa sổ nổi. Đây là tính năng độc đáo của Apple: người dùng có thể chuyển đổi một trong các cửa sổ từ Split View sang Slide Over và ngược lại mà không mất dữ liệu. Nhà phát triển phải hỗ trợ cả ba chế độ: toàn màn hình, Split View và Slide Over.
Để hỗ trợ Split View trên iOS, ứng dụng phải triển khai bố cục thích ứng qua Size Classes và scene (UIScene). Từ iOS 13, Apple yêu cầu ứng dụng xử lý chính xác chế độ đa cửa sổ — nếu không hệ thống có thể buộc khởi động lại Activity trên iPad.
Khi vào và ra khỏi Split Screen, các thay đổi cấu hình xảy ra: chiều rộng, chiều cao và tỷ lệ khung hình của cửa sổ thay đổi. Hành vi tiêu chuẩn của Android là tạo lại Activity (onDestroy + onCreate). Để tránh điều này, hãy chỉ định android:configChanges trong tệp kê khai.
Khi tạo lại, Activity mất trạng thái View và ViewModel. Sử dụng SavedStateHandle để lưu trạng thái giao diện người dùng hoặc ViewModel có phạm vi Application. Một giải pháp thay thế là onRetainNonConfigurationInstance() cho các đối tượng phức tạp.
@Override
fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
val isSplitScreen = isInMultiWindowMode()
if (isSplitScreen) {
adjustLayoutForSplitScreen()
}
}
Trên iPadOS, cơ chế tương đương là traitCollectionDidChange hoặc viewWillTransitionToSize. Nhà phát triển nhận được kích thước vùng chứa mới và phải xây dựng lại bố cục theo Size Class.
Trên Android, hỗ trợ Split Screen bắt đầu bằng cách đặt cờ resizeableActivity trong tệp kê khai. Sau đó, Activity có thể thu nhỏ xuống chiều rộng tối thiểu 220 dp. Nếu ứng dụng không hỗ trợ màn hình hẹp như vậy, hãy chỉ định android:minWidth trong tệp kê khai.
Đối với iPad, nhà phát triển chỉ cần hỗ trợ Size Classes và sử dụng Auto Layout hoặc SwiftUI. SwiftUI tự động điều chỉnh giao diện khi vào Split View — ví dụ: NavigationSplitView chuyển đổi giữa chế độ xếp chồng và cạnh nhau.
Nên kiểm tra Split Screen trên thiết bị thực hoặc trong trình giả lập với cài đặt cửa sổ đa kích thước. Trình giả lập Android cho phép khởi chạy bất kỳ số lượng cửa sổ nào qua ADB và kiểm tra hành vi của ứng dụng ở các tỷ lệ khác nhau.
| Nền tảng | Cơ chế thích ứng | Chiều rộng tối thiểu |
|---|---|---|
| Android | resizeableActivity + configChanges | 220 dp |
| iPadOS | Size Classes + UIScene | 320 pt (chính) |
Sai lầm đầu tiên là bỏ qua việc bảo toàn trạng thái. Trong Split Screen, Activity có thể được tạo lại bất kỳ lúc nào mà không cần hành động của người dùng. Nếu dữ liệu chỉ được lưu trong các biến cục bộ, nó sẽ bị mất. Sử dụng ViewModel cho dữ liệu màn hình và SavedStateHandle cho các trạng thái quan trọng.
Sai lầm thứ hai là ẩn nội dung khi cửa sổ thu nhỏ. Một số nhà phát triển ẩn các phần tử khi chiều rộng giảm xuống dưới một ngưỡng nhất định. Cách tiếp cận đúng là xây dựng lại bố cục: trên màn hình hẹp, chỉ hiển thị nội dung quan trọng nhất thay vì ẩn mọi thứ. Window Size Class cung cấp các điểm ngắt có sẵn cho logic này.
Sai lầm thứ ba là không xử lý onWindowFocusChanged. Trong Split Screen, tiêu điểm có thể chuyển đổi giữa các cửa sổ mà không đóng ứng dụng. Bỏ qua sự kiện này khiến trình phát video dừng lại khi người dùng chỉ nhìn sang cửa sổ bên cạnh.
Các câu hỏi thường gặp
Sử dụng Intent với FLAG_ACTIVITY_LAUNCH_ADJACENT. Nếu thiết bị đang ở chế độ Split Screen, ứng dụng sẽ mở trong cửa sổ bên cạnh. Nếu thiết bị ở chế độ toàn màn hình, cờ sẽ bị bỏ qua.
Có. Activity vẫn hiển thị nhưng mất tiêu điểm — onPause được gọi, nhưng không gọi onStop. Khi thoát Split Screen, onMultiWindowModeChanged được gọi, sau đó là onResume.
Sử dụng WindowManager.getCurrentWindowMetrics() hoặc Jetpack WindowManager. Không sử dụng Display.getSize() — nó trả về toàn bộ màn hình, không phải cửa sổ ứng dụng hiện tại.
Có. Trên thiết bị ở trạng thái mở, Split Screen thường là chế độ mặc định. Samsung Galaxy Z Fold ở chế độ ngang cung cấp Split Screen với ba ứng dụng cùng lúc.
Đặt android:resizeableActivity="false" cho Activity đó. Đối với API 24+, cờ này tắt Split Screen. Trên Android 12L+, sử dụng android:minWidth và android:minHeight.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm