Hướng, tỷ lệ khung hình và khả năng đổi kích thước của ứng dụng

Ứng dụng Android chạy trên mọi loại thiết bị: điện thoại, máy tính bảng, thiết bị có thể gập lại, Chromebook, ô tô, TV và thậm chí cả XR. Để thích ứng với môi trường đa dạng này, ứng dụng của bạn phải hỗ trợ mọi kiểu dáng thiết bị và kích thước màn hình.

Android 16 (API cấp 36) cho phép các ứng dụng thích ứng với nhiều kiểu dáng và kích thước màn hình bằng cách ghi đè các quy tắc hạn chế của ứng dụng đối với hướng màn hình, tỷ lệ khung hình và khả năng đổi kích thước. Các chế độ ghi đè áp dụng cho các thiết bị có chiều rộng nhỏ nhất >= 600 dp, xác định những điều sau:

  • Máy tính bảng
  • Màn hình bên trong của thiết bị có thể gập lại có màn hình lớn
  • Cửa sổ trên máy tính (trên tất cả các hệ số hình dạng)

Các ứng dụng nhắm đến API cấp 36 có thể đổi kích thước và có thể chuyển sang chế độ nhiều cửa sổ (tương đương với resizeableActivity="true") nếu chiều rộng nhỏ nhất của màn hình >= 600 dp.

Ứng dụng có dạng hòm thư trên thiết bị màn hình lớn chưa mở trước Android 16, nhưng ở chế độ toàn màn hình khi nhắm đến Android 16. Ứng dụng hiển thị nhiều mục tin tức hơn khi ở chế độ toàn màn hình thay vì hòm thư.
Hình 1. Nguồn cấp dữ liệu Tin tức dành cho nhà phát triển trước đây có khung hòm thư trên các thiết bị màn hình lớn (bên trái) sẽ chạy ở chế độ toàn màn hình khi nhắm đến Android 16 (bên phải).

Android 16 thực thi một mô hình nhất quán về thiết kế ứng dụng thích ứng giúp tối ưu hoá trải nghiệm người dùng bằng cách tuân thủ lựa chọn ưu tiên của người dùng về hướng thiết bị, tỷ lệ khung hình và kích thước màn hình.

Các thay đổi

Các thuộc tính và API tệp kê khai sau đây sẽ bị bỏ qua đối với các ứng dụng nhắm đến Android 16 (API cấp 36) trên màn hình lớn:

Thuộc tính hoặc API Giá trị bị bỏ qua
screenOrientation portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape
resizeableActivity tất cả
minAspectRatio tất cả
maxAspectRatio tất cả
setRequestedOrientation()

getRequestedOrientation()
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape

Ngoại lệ

Sau đây là một số ngoại lệ đối với các thay đổi trong Android 16:

  • Màn hình nhỏ hơn sw600dp (hầu hết điện thoại, thiết bị có thể gập lại và màn hình ngoài của thiết bị có thể gập lại màn hình lớn)

  • Trò chơi, dựa trên cờ android:appCategory

    Phát hành trò chơi bằng Android App Bundle và Tính năng ký ứng dụng của Play, cho phép Google Play tự động quản lý cờ này và cung cấp các lợi ích của gói ứng dụng. Xem thêm phần Tổng quan về tệp kê khai ứng dụng.

  • 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

Ngừng

To opt out of the API level 36 behavior, declare the PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY manifest property.

To opt out for a specific activity, set the property in the <activity> element:

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

To opt out for your entire app, set the property in the <application> element:

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

Kiểm thử

Để kiểm thử xem ứng dụng của bạn có bị ảnh hưởng bởi các thay đổi trong Android 16 hay không, hãy sử dụng trình mô phỏng dòng máy tính bảng Pixel và Pixel Fold trong Android Studio, đồng thời đặt targetSdkPreview = "Baklava" trong tệp build.gradle của mô-đun ứng dụng.

Hoặc sử dụng khung tương thích của ứng dụng trên thiết bị thử nghiệm bằng cách bật cờ UNIVERSAL_RESIZABLE_BY_DEFAULT (xem Công cụ khung tương thích).

Bạn có thể tự động hoá quy trình kiểm thử bằng khung kiểm thử EspressoAPI kiểm thử Jetpack Compose.

Các vấn đề thường gặp

Những ứng dụng hạn chế hướng thiết bị, tỷ lệ khung hình hoặc khả năng đổi kích thước ứng dụng có thể gặp vấn đề về hiển thị trên Android 16, chẳng hạn như bố cục chồng chéo.

Để mang lại trải nghiệm người dùng tối ưu trên điện thoại, thiết bị có thể gập lại, máy tính bảng, Chromebook, màn hình ô tô hoặc XR, hãy xây dựng ứng dụng của bạn sao cho thích ứng và đáp ứng:

  • Tránh kéo giãn các thành phần trên giao diện người dùng: Các bố cục được thiết kế cho màn hình điện thoại dọc tiêu chuẩn có thể không phù hợp với các tỷ lệ khung hình khác. Ví dụ: các thành phần trên giao diện người dùng lấp đầy toàn bộ chiều rộng của màn hình sẽ xuất hiện bị kéo giãn theo hướng ngang. Thêm chiều rộng tối đa vào các thành phần để tránh bị kéo giãn.

  • Bật tính năng cuộn bố cục: Nếu bố cục không cuộn, người dùng có thể không truy cập được vào các nút hoặc các thành phần giao diện người dùng khác nằm ngoài màn hình theo hướng ngang. Bật bố cục ứng dụng để cuộn nhằm đảm bảo tất cả nội dung đều có thể truy cập được bất kể chiều cao của màn hình.

  • Đảm bảo khả năng tương thích của máy ảnh ở chế độ dọc và ngang: Bản xem trước của kính ngắm máy ảnh giả định tỷ lệ khung hình và hướng cụ thể so với cảm biến máy ảnh có thể dẫn đến bản xem trước bị kéo giãn hoặc lật trên màn hình không tuân thủ. Đảm bảo kính ngắm xoay đúng cách khi thay đổi hướng. Cho phép kính ngắm điều chỉnh theo tỷ lệ khung hình giao diện người dùng khác với tỷ lệ khung hình của cảm biến.

  • Duy trì trạng thái trong khi thay đổi kích thước cửa sổ: Việc xoá các quy tắc hạn chế về hướng và tỷ lệ khung hình có thể dẫn đến việc thường xuyên thay đổi kích thước cửa sổ ứng dụng để phản hồi cách người dùng muốn sử dụng ứng dụng, chẳng hạn như bằng cách xoay, gập hoặc mở thiết bị hoặc bằng cách đổi kích thước ứng dụng ở chế độ nhiều cửa sổ hoặc chế độ cửa sổ máy tính. Các thay đổi về cấu hình như thay đổi hướng và đổi kích thước cửa sổ sẽ khiến hoạt động được tạo lại (theo mặc định). Để đảm bảo mang lại trải nghiệm người dùng tối ưu, hãy duy trì trạng thái ứng dụng trong quá trình thay đổi cấu hình để ứng dụng giữ lại dữ liệu (chẳng hạn như dữ liệu nhập vào biểu mẫu) và người dùng có thể duy trì ngữ cảnh.

  • Sử dụng các lớp kích thước cửa sổ: Hỗ trợ nhiều kích thước cửa sổ và tỷ lệ khung hình mà không cần tuỳ chỉnh theo từng thiết bị. Giả sử kích thước cửa sổ sẽ thay đổi thường xuyên. Sử dụng các lớp kích thước cửa sổ để mô tả kích thước cửa sổ, sau đó áp dụng bố cục thích ứng thích hợp.

  • Tạo bố cục thích ứng: Trong các lớp kích thước cửa sổ, bố cục thích ứng sẽ điều chỉnh theo các thay đổi về kích thước hiển thị để luôn tạo ra bản trình bày ứng dụng tối ưu.

Dòng thời gian

  • Android 16 (2025): Hỗ trợ tất cả hướng và tỷ lệ khung hình cũng như khả năng đổi kích thước ứng dụng là trải nghiệm cơ sở cho các thiết bị màn hình lớn (chiều rộng màn hình nhỏ nhất từ 600 dp trở lên) đối với các ứng dụng nhắm đến API cấp 36. Tuy nhiên, nhà phát triển có thể chọn không sử dụng.

  • Bản phát hành Android vào năm 2026: Hỗ trợ tất cả hướng và tỷ lệ khung hình cũng như khả năng đổi kích thước ứng dụng sẽ là trải nghiệm cơ sở cho các thiết bị màn hình lớn (chiều rộng màn hình nhỏ nhất >= 600 dp) đối với các ứng dụng nhắm đến API cấp 37. Nhà phát triển sẽ không có lựa chọn từ chối.

Cấp API mục tiêu Thiết bị áp dụng Cho phép nhà phát triển chọn không sử dụng
36 (Android 16) Thiết bị có màn hình lớn (chiều rộng màn hình nhỏ nhất >= 600 dp)
37 (Dự kiến) Thiết bị có màn hình lớn (chiều rộng màn hình nhỏ nhất >= 600 dp) Không

Thời hạn để nhắm đến các cấp độ API cụ thể là tuỳ theo cửa hàng ứng dụng. Kể từ tháng 8 năm 2026, Google Play sẽ yêu cầu các ứng dụng nhắm đến API cấp 36 và API cấp 37 kể từ tháng 8 năm 2027.

Tài nguyên khác