Hiện nay, các ứng dụng Android đang chạy trên nhiều thiết bị (chẳng hạn như điện thoại, máy tính bảng, thiết bị có thể gập lại, máy tính để bàn, ô tô và TV) và các chế độ chia cửa sổ trên màn hình lớn (chẳng hạn như chia đôi màn hình và cửa sổ kiểu máy tính). Do đó, nhà phát triển nên tạo các ứng dụng Android có thể thích ứng với mọi kích thước màn hình và cửa sổ, bất kể hướng thiết bị. Các mô hình như hạn chế hướng và khả năng đổi kích thước quá hạn chế trong thế giới đa thiết bị ngày nay.
Bỏ qua các quy tắc hạn chế về hướng, khả năng đổi kích thước và tỷ lệ khung hình
Đối với các ứng dụng nhắm đến Android 17 (cấp độ API 37) trở lên, các quy tắc hạn chế về hướng, khả năng đổi kích thước và tỷ lệ khung hình không còn áp dụng trên những màn hình có chiều rộng nhỏ nhất lớn hơn 600dp. Các ứng dụng sẽ lấp đầy toàn bộ cửa sổ hiển thị, bất kể tỷ lệ khung hình hoặc hướng ưu tiên của người dùng và không sử dụng tính năng pillarboxing.
Android 17 loại bỏ lựa chọn không tham gia tạm thời của nhà phát triển đối với các quy tắc hạn chế về hướng và khả năng đổi kích thước trên các thiết bị có màn hình lớn được cung cấp trong Android 16.
Thay đổi này giới thiệu một hành vi nền tảng tiêu chuẩn mới. Android đang chuyển sang một mô hình mà các ứng dụng được kỳ vọng sẽ thích ứng với nhiều hướng, kích thước màn hình và tỷ lệ khung hình. Các quy tắc hạn chế như hướng cố định hoặc khả năng đổi kích thước hạn chế sẽ cản trở khả năng thích ứng của ứng dụng. Hãy làm cho ứng dụng của bạn có khả năng thích ứng để mang lại trải nghiệm người dùng tốt nhất có thể.
Bạn cũng có thể kiểm thử hành vi này bằng cách sử dụng khung tương thích của ứng dụng
và bật cờ tương thích UNIVERSAL_RESIZABLE_BY_DEFAULT.
Các thay đổi có thể gây lỗi thường gặp
Việc bỏ qua các quy tắc hạn chế về hướng, khả năng đổi kích thước và tỷ lệ khung hình có thể ảnh hưởng đến giao diện người dùng của ứng dụng trên một số thiết bị, đặc biệt là các phần tử được thiết kế cho bố cục nhỏ bị khoá ở hướng dọc. Ví dụ: các ứng dụng có thể gặp phải các vấn đề như bố cục bị kéo giãn và các thành phần cũng như hình ảnh động ngoài màn hình. Bất kỳ giả định nào bạn đưa ra về tỷ lệ khung hình hoặc hướng đều có thể gây ra các vấn đề về hình ảnh cho ứng dụng. Tìm hiểu thêm về cách tránh những vấn đề này và cải thiện hành vi thích ứng của ứng dụng.
Một vấn đề thường gặp trên các thiết bị có thể gập lại ở hướng ngang hoặc để tính toán tỷ lệ khung hình trong các trường hợp như Nhiều cửa sổ, cửa sổ kiểu máy tính hoặc màn hình được kết nối là khi bản xem trước của Máy ảnh xuất hiện bị kéo giãn, xoay hoặc cắt. Vấn đề này thường xảy ra trên các thiết bị có màn hình lớn và thiết bị có thể gập lại vì các ứng dụng giả định mối quan hệ cố định giữa các tính năng của Máy ảnh (như tỷ lệ khung hình và hướng cảm biến) và các tính năng của thiết bị (như hướng thiết bị và hướng tự nhiên). Tìm hiểu thêm về cách quản lý bản xem trước của máy ảnh.
Việc cho phép xoay thiết bị sẽ dẫn đến việc tạo lại nhiều hoạt động hơn, điều này có thể dẫn đến mất trạng thái của người dùng nếu không được duy trì đúng cách. Tìm hiểu cách lưu đúng trạng thái giao diện người dùng trong bài viết Lưu trạng thái giao diện người dùng.
Thông tin chi tiết về việc triển khai
Các thuộc tính tệp kê khai và API thời gian chạy sau đây sẽ bị bỏ qua trên các thiết bị có màn hình lớn ở chế độ toàn màn hình và chế độ nhiều cửa sổ:
screenOrientationresizableActivityminAspectRatiomaxAspectRatiosetRequestedOrientation()getRequestedOrientation()
Các giá trị sau đây cho screenOrientation, setRequestedOrientation() và getRequestedOrientation() sẽ bị bỏ qua:
portraitreversePortraitsensorPortraituserPortraitlandscapereverseLandscapesensorLandscapeuserLandscape
Đối với khả năng đổi kích thước màn hình, android:resizeableActivity="false",
android:minAspectRatio và android:maxAspectRatio không có hiệu lực.
Ngoại lệ
Các quy tắc hạn chế về hướng, khả năng đổi kích thước và tỷ lệ khung hình của Android 17 không áp dụng trong các trường hợp sau:
- Trò chơi (dựa trên cờ
android:appCategory) - Người dùng chọn tham gia rõ ràng vào hành vi mặc định của ứng dụng trong phần cài đặt tỷ lệ khung hình của thiết bị
- Màn hình có chiều rộng nhỏ nhất nhỏ hơn
sw600dp