Ứ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ó thể đổi kích thước cửa sổ ở chế độ nhiều cửa sổ, hướng dọc và ngang, được gập lại và màn hình đã mở của thiết bị có thể gập lại.
Danh sách ngắn gồm các chế độ cài đặt cấu hình và API cho phép bạn tạo bản dựng của chúng tôi. Tuy nhiên, một số API và chế độ cài đặt đã lỗi thời không tương thích với ứng dụng thích ứng và bạn nên tránh sử dụng.
Khả năng đổi kích thước
Ứng dụng thích ứng hỗ trợ khả năng đổi kích thước ứng dụng và chế độ nhiều cửa sổ.
Thuộc tính resizeableActivity
của <activity>
và
Phần tử tệp kê khai <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) và
màn hình lớn hơn, cao hơn hỗ trợ chế độ nhiều cửa sổ bất kể
. Để biết thêm thông tin, hãy xem bài viết Hỗ trợ chế độ nhiều cửa sổ.
Hỗ trợ ứng dụng của bạn cho người tham gia trong các tình huống nhiều cửa sổ, đa nhiệm tăng hiệu 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 tính năng này đi—đó là true
theo mặc định trên Android 7.0 (API
cấp 24) trở lên.
Đừng đặt resizeableActivity="false"
cho bất kỳ cấp độ API nào. Không loại trừ ứng dụng của bạn
trong các trường hợp sử dụng có liên quan đến chế độ nhiều cửa sổ.
Hướng
Ứng dụng thích ứng hỗ trợ cả hướng dọc và ngang bất kể màn hình hoặc chế độ cửa sổ hiện tại.
Cài đặt tệp kê khai screenOrientation
hạn chế hướng hoạt động.
Loại bỏ chế độ cài đặt screenOrientation
khỏi tệp kê khai ứng dụng.
Việc khoá hướng của các ứng dụng không ngăn việc thay đổi kích thước cửa sổ. Ứng dụng
đổ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 cửa sổ dạng tự do được đổi kích thước. Ứng dụng của bạn phải hỗ trợ các thay đổi trong cửa sổ
bất kể chế độ cài đặt thuộc tính screenOrientation
là gì.
Đừng hạn chế hướng hoạt động. Ứng dụng khoá hướng có dạng hòm thư trên các thiết bị có màn hình lớn và kích thước cửa sổ không tương thích.
Khả năng người dùng tìm thấy ứng dụng dạng hòm thư giảm khả năng được phát hiện trên Google Play 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
Vì kích thước màn hình và cửa sổ thay đổi, nên tỷ lệ khung hình cũng thay đổi theo, từ chiều cao đến chiều cao hẹp, vuông, ngắn và rộng.
Chế độ cài đặt tệp kê khai minAspectRatio
và maxAspectRatio
hạn chế
tỷ lệ khung hình của ứng dụng với các giá trị được cố định giá trị trong mã.
Điều chỉnh ứng dụng của bạn cho phù hợp với màn hình bất kể kích thước tương đối.
Loại bỏ chế độ cài đặt minAspectRatio
và maxAspectRatio
khỏi ứng dụng
tệp kê khai. Hoặc đảm bảo ứng dụng có thể đổi kích thước và tỷ lệ khung hình tự xử lý
(xem phần Khả năng đổi kích thước).
Đừng cố kiểm soát kích thước tương đối của ứng dụng. Nếu ứng dụng của bạn 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, ứng dụng của bạn ở dạ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 ứng dụng dạng hòm thư nhằm lấp đầy vùng hiển thị có sẵn. Xem phần Thiết bị chế độ tương thích.
Kích thước cửa sổ
Tối ưu hoá bố cục cho nhiều kích thước hiển thị là tiền đề chính 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ì thiết bị kích thước màn hình. 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ị.
Các lớp kích thước cửa sổ giúp xác định và phân loại một cách có hệ thống kích thước của cửa sổ ứng dụng. Điều chỉnh ứng dụng bằng cách thay đổi bố cục dưới dạng cửa sổ các thay đổi về kích thước của ứng dụng.
Đá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 currentWindowAdaptiveInfo()
hàm cấp cao nhất của thư viện Thích ứng Compose Material 3. Để biết thêm
hãy xem phần Xây dựng ứng dụng thích ứng.
Đừng bỏ qua tiện ích của các định nghĩa lớp kích thước cửa sổ và các API tích hợp sẵn. Đừ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
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ố không bao gồm trang trí hệ thống.
Sử dụng WindowManager#getCurrentWindowMetrics()
và
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 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()
: Không dùng nữa trong Android 12 (API cấp 31)getRealMetrics()
: Không dùng nữa 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ó bố cục
tệp, không có bộ hạn định tài nguyên. Chỉ các thành phần kết hợp không có trạng thái, dựa trên Kotlin
như Column
, Row
và Box
mô tả giao diện người dùng cũng như các đối tượng sửa đổi
chẳng hạn như offset
, padding
và size
thêm hành vi vào giao diện người dùng
phần tử.
Tạo bản dựng bằng Compose. Luôn cập nhật các tính năng và bản phát hành mới nhất.
Đừ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ợ phát triển ứng dụng thích ứng.
Hãy sử dụng các API sau để giúp ứng dụng của bạn trở nên 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 hoá danh sách-chi tiết. Điều chỉnh bố cục theo kích thước cửa sổ ứng dụng.SupportingPaneScaffold
: Triển khai ngăn hỗ trợ chuẩn hoá của bạn.
Đừng tự mình sáng chế lại. Đừng bỏ lỡ cơ hội tăng năng suất dành cho nhà phát triển do tất cả các thư viện Jetpack Compose cung cấp.
Bố cục
Người dùng mong muốn ứng dụng sẽ tận dụng tối đa không gian hiển thị có sẵn bằng các thành phần bổ sung hoặc chế độ kiểm soát nâng cao.
Ứng dụng thích ứng tối ưu hoá bố cục dựa trên những thay đổi trên màn hình, cụ thể là những thay đổi về kích thước của cửa sổ ứng dụng hoặc thay đổi về tư thế của thiết bị.
Thay đổi các thành phần giao diện người dùng khi kích thước cửa sổ thay đổi để tận dụng các thành phần có sẵn không gian hiển thị. Ví dụ: hoán đổi thanh điều hướng ở dưới cùng được dùng trên màn hình thu gọn kích thước cửa sổ cho dải điều hướng dọc trên cửa sổ trung bình và cửa sổ mở rộng. Đặt lại vị trí hộp thoại để có thể tiếp cận trên tất cả màn hình.
Sắp xếp nội dung thành các ngăn để hỗ trợ bố cục nhiều ngăn như list-detail và ngăn bổ trợ để hiển thị nội dung động.
Nếu bạn không sử dụng ngăn nội dung, đừng chỉ kéo giãn các phần tử trên giao diện người dùng để lấp đầy
không gian hiển thị có sẵn. Các dòng văn bản dài khó đọc. Giãn
các nút trông có thiết kế không đẹp. Nếu sử dụng Modifier.fillMaxWidth
, bạn không nên
giả định đó là hành vi phù hợp cho mọi kích thước hiển thị.
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 đến trải nghiệm nâng cao trải nghiệm người dùng và giúp người dùng làm việc hiệu quả hơn dựa trên các kiểu dáng tất cả các loại.
Tận dụng chức năng tích hợp sẵn của khung Android để điều hướng bằng phím tab trên bàn phím và nhấp chuột, chọn và cuộn bằng chuột hoặc bàn di chuột. Đăng 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 Jetpack để cho phép người dùng ghi vào mọi
Thành phần TextField
dùng bút cảm ứng.
Đừng làm cho các phương thức nhập thay thế trở nên bất khả thi. Không giới thiệu khả năng hỗ trợ tiếp cận vấn đề.
Tóm tắt
- Tạo ứng dụng bằng Compose và Thư viện thích ứng Material 3
- 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ông phải thao tác chạm
- Tránh các API không dùng nữa
✓ Thực hiện những gì người dùng của bạn mong đợi: tối ưu hóa ứng dụng của bạn cho nhiều loại thiết bị mà mọi người sử dụng mỗi ngày.
#### Đừng chờ đợi. Hãy bắt đầu ngay hôm nay!