Giờ đây, các ứng dụng Android 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, ô tô và TV) và các chế độ tạo cửa sổ trên màn hình lớn (chẳng hạn như chế độ chia đôi màn hình và chế độ tạo cửa sổ trên máy tính), nhà phát triển nên tạo các ứng dụng Android 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 định 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 trở lên, các hạn chế về hướng, khả năng đổi kích thước và tỷ lệ khung hình sẽ 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 600 dp. Ứng dụng lấp đầy toàn bộ cửa sổ hiển thị, bất kể tỷ lệ khung hình hoặc hướng mà người dùng muốn và không sử dụng hiệu ứng hòm thư.
Android 17 loại bỏ lựa chọn tạm thời không tham gia dành cho 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 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 tiêu chuẩn mới của nền tảng. Android đang hướng đến một mô hình mà các ứng dụng dự kiến 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. Giúp ứng dụng của bạn 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 hạn chế về hướng, khả năng thay đổ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à những phần tử được thiết kế cho bố cục nhỏ ở chế độ dọc. Ví dụ: các ứng dụng có thể gặp phải những vấn đề như bố cục bị kéo giãn, ảnh động và thành phần nằm ngoài màn hình. Mọi giả định mà bạn đưa ra về tỷ lệ khung hình hoặc hướng đều có thể gây ra vấn đề về hình ảnh cho ứng dụng của bạn. 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 thiết bị có thể gập lại theo hướng ngang hoặc khi 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ổ trên máy tính hoặc màn hình được kết nối là khi bản xem trước của camera 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 camera (chẳng hạn 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ị (chẳng hạn 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 camera.
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 người dùng nếu không được duy trì đúng cách. Tìm hiểu cách lưu trạng thái giao diện người dùng một cách chính xác 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ị 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
Về khả năng thay đổi kích thước màn hình, android:resizeableActivity="false",
android:minAspectRatio và android:maxAspectRatio không có tác dụng.
Ngoại lệ
Các quy định hạn chế về hướng, khả năng đổi kích thước và tỷ lệ khung hình của Android 17 sẽ không áp dụng trong những trường hợp sau:
- Trò chơi (dựa trên cờ
android:appCategory) - Người dùng chọn sử dụng 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