Việc nên làm và không nên làm của quảng cáo thích ứng

Ứng dụng thích ứng hỗ trợ màn hình ở mọi kích thước: toàn bộ màn hình thiết bị, cửa sổ có thể đổi kích thước ở chế độ nhiều cửa sổ, hướng dọc và ngang, màn hình gập và mở của thiết bị có thể gập lại.

Danh sách ngắn về các chế độ cài đặt cấu hình và API cho phép bạn tạo ứng dụng thích ứng. Tuy nhiên, một số chế độ cài đặt và API đã lỗi thời không tương thích với ứng dụng thích ứng và bạn phải tránh sử dụng.

Khả năng đổi kích thước

Ứng dụng thích ứng hỗ trợ tính năng đổi kích thước ứng dụng và chế độ nhiều cửa sổ.

Thuộc tính resizeableActivity của phần tử tệp kê khai <activity><application> bật hoặc tắt chế độ nhiều cửa sổ trên Android 11 (API cấp 30) trở xuống. Trên Android 12 (API cấp 31) trở lên, màn hình lớn hỗ trợ chế độ nhiều cửa sổ bất kể thuộc tính. Để biết thêm thông tin, hãy xem phần Hỗ trợ chế độ nhiều cửa sổ.

✓ Nên

Cho phép ứng dụng của bạn tham gia các tình huống nhiều cửa sổ, đa nhiệm để tăng năng suất và sự hài lòng của người dùng.

Đặt resizeableActivity="true" nếu ứng dụng của bạn nhắm đến các cấp độ API thấp hơn 24; nếu không, hãy quên đi – giá trị mặc định là true trên Android 7.0 (API cấp 24) trở lên.

✗ Không nên

Không đặt resizeableActivity="false" cho bất kỳ cấp độ API nào. Đừng loại trừ ứng dụng của bạn khỏi các trường hợp sử dụng liên quan đến chế độ nhiều cửa sổ.

Hướng

Ứng dụng thích ứng hỗ trợ hướng dọc và ngang bất kể kích thước màn hình hoặc chế độ cửa sổ.

Chế độ cài đặt tệp kê khai screenOrientation hạn chế hướng hoạt động.

✓ Nên

Xoá chế độ cài đặt screenOrientation khỏi tệp kê khai ứng dụng.

Việc khoá hướng của ứng dụng không ngăn được việc thay đổi kích thước cửa sổ. Các ứng dụng được đổi kích thước khi chuyển sang chế độ nhiều cửa sổ, khi thiết bị được gập lại hoặc mở ra, hoặc khi đổi kích thước cửa sổ loại máy tính. Ứng dụng của bạn phải hỗ trợ các thay đổi về kích thước cửa sổ bất kể chế độ cài đặt thuộc tính screenOrientation.

✗ Không nên

Không hạn chế hướng hoạt động. Các ứng dụng khoá hướng sẽ có giao diện dạng hòm thư trên thiết bị màn hình lớn và kích thước cửa sổ không tương thích.

Ứng dụng dạng hòm thư sẽ khó được phát hiện hơn trên Google Play đối với máy tính bảng, thiết bị có thể gập lại và thiết bị ChromeOS.

Tỷ lệ khung hình

Kích thước màn hình và cửa sổ khác nhau nên tỷ lệ khung hình cũng khác nhau, từ cao và hẹp, đến hình vuông, đến ngắn và rộng.

Các chế độ cài đặt tệp kê khai minAspectRatiomaxAspectRatio hạn chế tỷ lệ khung hình của ứng dụng ở các giá trị được mã hoá cứng.

✓ Nên

Điều chỉnh ứng dụng của bạn cho vừa với màn hình bất kể kích thước tương đối.

Xoá chế độ cài đặt minAspectRatiomaxAspectRatio khỏi tệp kê khai ứng dụng. Hoặc đảm bảo ứng dụng của bạn có thể đổi kích thước và tỷ lệ khung hình sẽ tự điều chỉnh (xem phần Khả năng đổi kích thước).

✗ Không nên

Đừng cố gắng kiểm soát các kích thước tương đối của ứng dụng. Nếu ứng dụng chạy trên màn hình hoặc trong cửa sổ có tỷ lệ khung hình không tương thích với tỷ lệ khung hình của ứng dụng, thì ứng dụng sẽ có hiệu ứng hòm thư.

Trên Android 14 (API cấp 34) trở lên, người dùng có thể ghi đè tỷ lệ khung hình của ứng dụng để mở rộng các ứng dụng dạng hòm thư nhằm lấp đầy khu vực hiển thị có sẵn. Xem phần Chế độ tương thích với thiết bị.

Kích thước cửa sổ

Việc tối ưu hoá bố cục cho nhiều kích thước màn hình là tiền đề trung tâm của thiết kế thích ứng. Ứng dụng thích ứng tập trung vào kích thước cửa sổ ứng dụng thay vì kích thước màn hình thiết bị. Khi ứng dụng ở chế độ toàn màn hình, cửa sổ ứng dụng sẽ là màn hình thiết bị.

Lớp kích thước cửa sổ cung cấp một cách có hệ thống để xác định và phân loại kích thước cửa sổ ứng dụng. Điều chỉnh ứng dụng bằng cách thay đổi bố cục khi lớp kích thước cửa sổ của ứng dụng thay đổi.

✓ Nên

Đánh giá kích thước cửa sổ ứng dụng dựa trên các lớp kích thước cửa sổ.

Để xác định lớp kích thước cửa sổ, hãy sử dụng hàm cấp cao nhất currentWindowAdaptiveInfo() của thư viện Compose Material 3 thích ứng. Để biết thêm thông tin, hãy xem bài viết Tạo ứng dụng thích ứng.

✗ Không nên

Đừng bỏ qua tiện ích của các định nghĩa lớp kích thước cửa sổ và API tích hợp. Đừng sử dụng các API không dùng nữa để tính toán kích thước cửa sổ.

API không dùng nữa

Các API nền tảng cũ không đo lường chính xác cửa sổ ứng dụng; một số đo lường màn hình thiết bị, một số loại trừ phần trang trí hệ thống.

✓ Nên

Sử dụng WindowManager#getCurrentWindowMetrics()WindowMetrics#getBounds() để lấy kích thước của cửa sổ ứng dụng. Sử dụng WindowMetrics#getDensity() để lấy mật độ hiển thị.

✗ Không nên

Đừng sử dụng các API Display không dùng nữa sau đây để xác định kích thước cửa sổ:

  • getSize(): Không dùng nữa trong Android 11 (API cấp 30)
  • getMetrics(): Không dùng nữa trong Android 11 (API cấp 30)
  • getRealSize(): Ngừng sử dụng trong Android 12 (API cấp 31)
  • getRealMetrics(): Ngừng sử dụng trong Android 12 (API cấp 31)

Compose

Jetpack Compose được thiết kế để phát triển giao diện người dùng thích ứng. Không có XML, không có tệp bố cục, không có bộ hạn định tài nguyên. Chỉ cần các thành phần kết hợp không có trạng thái dựa trên Kotlin như Column, RowBox mô tả giao diện người dùng của bạn, cũng như các công cụ sửa đổi như offset, paddingsize giúp thêm hành vi vào các thành phần giao diện người dùng.

✓ Nên

Tạo bằng Compose. Luôn nắm bắt các tính năng và bản phát hành mới nhất.

✗ Không nên

Đừng dựa vào công nghệ lỗi thời. Đừng để ứng dụng của bạn trở nên lỗi thời.

Thư viện thích ứng Compose Material 3

Thư viện thích ứng Compose Material 3 cung cấp các thành phần và API hỗ trợ việc phát triển ứng dụng thích ứng.

✓ Nên

Sử dụng các API sau để giúp ứng dụng thích ứng:

  • NavigationSuiteScaffold: Chuyển đổi giữa thanh điều hướng và dải điều hướng tuỳ thuộc vào lớp kích thước cửa sổ ứng dụng.
  • ListDetailPaneScaffold: Triển khai bố cục chuẩn danh sách-chi tiết. Điều chỉnh bố cục cho phù hợp với kích thước cửa sổ ứng dụng.
  • SupportingPaneScaffold: Triển khai bố cục chuẩn của ngăn hỗ trợ.
✗ Không nên

Đừng phát minh lại bánh xe. Đừng bỏ lỡ những lợi ích về năng suất mà nhà phát triển có được từ tất cả thư viện Jetpack Compose.

Bố cục

Người dùng mong đợi ứng dụng tận dụng tối đa không gian hiển thị hiện có bằng nội dung bổ sung hoặc các chế độ điều khiển nâng cao.

Ứng dụng thích ứng tối ưu hoá bố cục dựa trên các thay đổi trong màn hình, cụ thể là các thay đổi về kích thước cửa sổ ứng dụng hoặc thay đổi về tư thế thiết bị.

✓ Nên

Thay đổi các thành phần trên giao diện người dùng khi kích thước cửa sổ thay đổi để tận dụng không gian hiển thị có sẵn. Ví dụ: hoán đổi thanh điều hướng dưới cùng dùng cho kích thước cửa sổ thu gọn thành dải điều hướng dọc trên cửa sổ trung bình và mở rộng. Đặt lại vị trí hộp thoại để có thể truy cập được trên tất cả màn hình.

Sắp xếp nội dung thành các ngăn để bật bố cục nhiều ngăn như danh sách chi tiết và ngăn hỗ trợ cho màn hình hiển thị nội dung động.

✓ Nên làm: Danh sách và các hoạt động chi tiết được sắp xếp theo bố cục hai ngăn.
✗ Không nên

Nếu bạn không sử dụng ngăn nội dung, đừng chỉ kéo giãn các thành phần trên giao diện người dùng để lấp đầy không gian hiển thị có sẵn. Dòng văn bản dài khó đọc. Các nút bị kéo giãn trông có thiết kế kém. Nếu bạn sử dụng Modifier.fillMaxWidth, đừng giả định đó là hành vi phù hợp cho mọi kích thước màn hình.

✗ Không nên: Bố cục bị kéo giãn để lấp đầy cửa sổ mở rộng.

Thiết bị đầu vào

Người dùng không chỉ sử dụng màn hình cảm ứng để tương tác với ứng dụng.

Ứng dụng thích ứng hỗ trợ bàn phím, chuột và bút cảm ứng bên ngoài để mang lại trải nghiệm người dùng nâng cao và giúp người dùng làm việc hiệu quả hơn trên mọi loại hệ số hình dạng.

✓ Nên

Tận dụng chức năng tích hợp sẵn của khung Android để điều hướng thẻ bàn phím và nhấp, chọn và cuộn bằng chuột hoặc bàn di chuột. Xuất bản phím tắt của ứng dụng trong Trình trợ giúp phím tắt.

Sử dụng thư viện Material 3 của Jetpack để cho phép người dùng viết vào bất kỳ thành phần TextField nào bằng bút cảm ứng.

✗ Không nên

Không làm cho các phương thức nhập thay thế không thể sử dụng được. Không gây ra vấn đề về hỗ trợ tiếp cận.

Tóm tắt

  • Tạo ứng dụng bằng Compose và thư viện Material 3 Adaptive
  • Bố cục cơ sở dựa trên các lớp kích thước cửa sổ
  • Tạo bố cục nhiều ngăn
  • Làm cho ứng dụng có thể thay đổi kích thước
  • Không bao giờ khoá hướng hoạt động
  • Không hạn chế tỷ lệ khung hình
  • Hỗ trợ phương thức nhập khác ngoài thao tác chạm
  • Tránh các API không dùng nữa

✓ Làm những gì người dùng mong đợi: tối ưu hoá ứng dụng của bạn cho nhiều loại thiết bị mà mọi người sử dụng hằng ngày.

✗ Đừng chờ. Hãy bắt đầu ngay hôm nay!