Stay organized with collections Save and categorize content based on your preferences.
cú pháp:
<supports-screens android:resizeable=["true"| "false"]
                  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:xlargeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"]
                  android:requiresSmallestWidthDp="integer"
                  android:compatibleWidthLimitDp="integer"
                  android:largestWidthLimitDp="integer"/>
có trong:
<manifest>
mô tả:

Cho phép bạn chỉ định kích thước màn hình mà ứng dụng hỗ trợ và bật chế độ tương thích màn hình cho các màn hình lớn hơn kích thước mà ứng dụng hỗ trợ. Bạn luôn phải sử dụng phần tử này trong ứng dụng để chỉ định kích thước màn hình mà ứng dụng của bạn hỗ trợ.

Lưu ý: Bạn không nên chạy ứng dụng ở chế độ tương thích màn hình. Chế độ này gây ra hiệu ứng nhiễu điểm ảnh và làm mờ giao diện người dùng do thu phóng. Để ứng dụng hoạt động tốt trên màn hình lớn, bạn nên làm theo nội dung phần Tổng quan về khả năng tương thích với màn hình và cung cấp bố cục thay thế cho các kích thước màn hình khác nhau.

Một ứng dụng có thể "tương thích" với một kích thước màn hình có sẵn nếu nó biết cách điều chỉnh kích thước phù hợp để lấp đầy toàn bộ màn hình. Chế độ điều chỉnh kích thước thông thường mà hệ thống áp dụng sẽ hoạt động hiệu quả đối với hầu hết các ứng dụng và bạn không cần phải làm gì thêm để giúp ứng dụng hoạt động trên những màn hình lớn hơn điện thoại di động. Tuy nhiên, cần tối ưu hoá giao diện người dùng của ứng dụng cho các kích thước màn hình khác nhau bằng cách cung cấp tài nguyên bố cục thay thế. Ví dụ: có thể bạn sẽ muốn thay đổi bố cục của một hoạt động khi nó chạy trên máy tính bảng so với khi chạy trên điện thoại di động.

Tuy nhiên, nếu ứng dụng không hoạt động tốt khi điều chỉnh vừa với các kích thước màn hình khác nhau, bạn có thể sử dụng thuộc tính của phần tử <supports-screens> để quyết định ứng dụng đó nên được chuyển sang các màn hình nhỏ hơn hay giao diện người dùng nên được mở rộng ("phóng to") cho vừa với màn hình lớn hơn bằng cách sử dụng chế độ tương thích với màn hình của hệ thống. Nếu bạn không thiết kế kích thước màn hình lớn hơn và việc đổi kích thước thông thường không đạt được kết quả mong muốn, chế độ tương thích màn hình sẽ căn chỉnh giao diện người dùng bằng cách mô phỏng một màn hình kích thước bình thường và mật độ trung bình, sau đó phóng to để lấp đầy toàn bộ màn hình. Lưu ý điều này sẽ gây hiệu ứng nhiễu điểm ảnh và khiến cho giao diện người dùng bị mờ, vì vậy bạn nên tối ưu hoá giao diện người dùng cho các màn hình lớn.

Lưu ý: Android 3.2 giới thiệu các thuộc tính mới: android:requiresSmallestWidthDp, android:compatibleWidthLimitDpandroid:largestWidthLimitDp. Nếu đang triển khai ứng dụng dành cho phiên bản Android 3.2 trở lên, bạn nên sử dụng các thuộc tính này để khai báo hỗ trợ kích thước màn hình thay vì các thuộc tính dựa trên kích thước màn hình phổ biến.

Giới thiệu chế độ tương thích với màn hình

Chế độ tương thích với màn hình là phương án cuối cùng dành cho các ứng dụng không được thiết kế phù hợp để tận dụng những kích thước màn hình lớn hơn. Không nên chạy ứng dụng trong chế độ này vì nó khiến trải nghiệm người dùng không đạt được đến mức tối ưu. Có hai phiên bản khác nhau của chế độ tương thích màn hình dựa trên phiên bản thiết bị mà ứng dụng đang chạy.

Trên các phiên bản Android từ 1.6 đến 3.1, hệ thống chạy ứng dụng trong cửa sổ "tem bưu chính". Cửa sổ này mô phỏng một màn hình 320dp x 480dp với đường viền màu đen lấp đầy phần còn lại của màn hình.

Trên các phiên bản Android 3.2 trở lên, hệ thống sắp xếp bố cục như trên màn hình 320dp x 480dp, sau đó phóng to lên để lấp đầy màn hình. Điều này thường gây ra các hiện tượng như làm mờ và gây hiệu ứng nhiễu điểm ảnh trong giao diện người dùng.

Để biết thêm thông tin về cách hỗ trợ các kích thước màn hình phù hợp nhằm tránh sử dụng chế độ tương thích màn hình cho ứng dụng, hãy đọc nội dung phần Tổng quan về khả năng tương thích với màn hình.

thuộc tính:
android:resizeable
Cho biết ứng dụng có thể thay đổi kích thước đối với các kích thước màn hình khác nhau hay không. Thuộc tính này là true, theo mặc định. Nếu bạn đặt thuộc tính này thành false, hệ thống sẽ chạy ứng dụng của bạn ở chế độ tương thích với màn hình trên các màn hình lớn.

Thuộc tính này đã ngừng hoạt động. Thuộc tính này ra đời nhằm giúp chuyển đổi các ứng dụng từ Android 1.5 sang 1.6, khi chế độ hỗ trợ nhiều màn hình lần đầu tiên được ra mắt. Không nên sử dụng thuộc tính này.

android:smallScreens
Cho biết ứng dụng có hỗ trợ các hệ số kích thước nhỏ hơn hay không. Màn hình nhỏ được định nghĩa là màn hình có tỷ lệ khung hình nhỏ hơn so với màn hình "bình thường" (màn hình HVGA truyền thống). Một ứng dụng không hỗ trợ màn hình nhỏ sẽ không được cung cấp cho các thiết bị màn hình nhỏ bởi các dịch vụ bên ngoài (chẳng hạn như Google Play), vì nền tảng khó có thể giúp một ứng dụng như vậy hoạt động trên màn hình nhỏ hơn. Thuộc tính này là "true" theo mặc định.
android:normalScreens
Cho biết ứng dụng có hỗ trợ các hệ số kích thước màn hình "bình thường" hay không. Thông thường, đó là màn hình HVGA có mật độ trung bình, nhưng loại WQVGA mật độ thấp và WVGA mật độ cao cũng được xem là bình thường. Thuộc tính này là "true" theo mặc định.
android:largeScreens
Cho biết ứng dụng có hỗ trợ các hệ số kích thước màn hình lớn hơn hay không. Màn hình lớn được định nghĩa là màn hình lớn hơn đáng kể so với màn hình của điện thoại di động "thông thường". Do đó, bạn phải đặc biệt chú ý đến thuộc tính của ứng dụng để sử dụng cho hiệu quả, mặc dù hệ thống có thể phải điều chỉnh kích thước của ứng dụng để lấp đầy màn hình.

Trên thực tế, giá trị mặc định cho thuộc tính này khác nhau giữa một số phiên bản, vì vậy bạn nên nhớ luôn khai báo thuộc tính này một cách rõ ràng. Lưu ý nếu đặt giá trị này là "false", chế độ tương thích với màn hình thường sẽ được bật lên.

android:xlargeScreens
Cho biết ứng dụng có hỗ trợ các hệ số kích thước màn hình lớn hơn nữa hay không. Màn hình cực đại được định nghĩa là màn hình lớn hơn đáng kể so với màn hình "lớn", chẳng hạn như máy tính bảng (hoặc một thiết bị lớn hơn nữa). Bạn phải đặc biệt chú ý đến thuộc tính của ứng dụng để sử dụng cho hiệu quả, mặc dù hệ thống có thể phải điều chỉnh kích thước của ứng dụng để lấp đầy màn hình.

Trên thực tế, giá trị mặc định cho thuộc tính này khác nhau giữa một số phiên bản, vì vậy bạn nên nhớ luôn khai báo thuộc tính này một cách rõ ràng. Lưu ý nếu đặt giá trị này là "false", chế độ tương thích với màn hình thường sẽ được bật lên.

Thuộc tính này đã ra mắt trong API cấp 9.

android:anyDensity
Cho biết ứng dụng có chứa tài nguyên đáp ứng được mọi mật độ màn hình hay không.

Đối với các ứng dụng hỗ trợ Android 1.6 (API cấp 4) trở lên, giá trị này được mặc định là "true" và không được đặt giá trị "false" trừ khi bạn hoàn toàn chắc chắn điều đó cần thiết để ứng dụng hoạt động. Chỉ nên tắt tuỳ chọn này nếu ứng dụng điều khiển trực tiếp các bitmap (xem tài liệu Hỗ trợ nhiều màn hình để biết thêm thông tin).

android:requiresSmallestWidthDp
Xác định độ rộng nhỏ nhất tối thiểu cần thiết. Độ rộng nhỏ nhất là chiều ngắn nhất của không gian màn hình (tính bằng đơn vị dp) mà giao diện người dùng của ứng dụng phải có – tức là kích thước ngắn nhất trong hai kích thước màn hình có sẵn. Do đó, để thiết bị được coi là tương thích với ứng dụng của bạn, chiều rộng nhỏ nhất của thiết bị phải bằng hoặc lớn hơn giá trị này. (Thông thường, giá trị cung cấp cho kích thước này chính là "chiều rộng nhỏ nhất" mà bố cục hỗ trợ, bất kể màn hình hiện tại có hướng như thế nào.)

Ví dụ: màn hình điện thoại di động thông thường có chiều rộng nhỏ nhất là 320dp, máy tính bảng 7 inch có chiều rộng nhỏ nhất là 600dp và máy tính bảng 10" có chiều rộng nhỏ nhất là 720dp. Các giá trị này thường là chiều rộng nhỏ nhất vì đây là kích thước ngắn nhất của không gian màn hình.

Kích thước dùng để so sánh với chiều rộng nhỏ nhất sẽ tính cả phần trang trí màn hình và giao diện người dùng của hệ thống. Ví dụ, nếu thiết bị có một số yếu tố giao diện người dùng cố định trên màn hình, hệ thống sẽ khai báo chiều rộng nhỏ nhất của thiết bị là một con số nhỏ hơn so với kích thước màn hình thực tế, có tính đến yếu tố giao diện người dùng này vì đó là những pixel màn hình không được phân bổ cho giao diện người dùng. Do đó, giá trị bạn sử dụng phải là chiều rộng tối thiểu mà bố cục yêu cầu, bất kể hướng hiện tại của màn hình là gì.

Nếu ứng dụng có thể điều chỉnh kích thước phù hợp với các kích thước màn hình nhỏ hơn (giảm xuống kích thước nhỏ hoặc chiều rộng tối thiểu là 320dp), thì không cần sử dụng thuộc tính này. Nếu không, bạn nên cho thuộc tính này một giá trị khớp với giá trị nhỏ nhất mà ứng dụng sử dụng cho bộ hạn định chiều rộng màn hình nhỏ nhất (sw<N>dp).

Cảnh báo: Hệ thống Android không quan tâm đến thuộc tính này, vì vậy hệ thống sẽ không ảnh hưởng đến cách vận hành của ứng dụng trong thời gian chạy. Thay vào đó, thuộc tính này được dùng để kích hoạt chế độ lọc cho ứng dụng trên các dịch vụ như Google Play. Tuy nhiên, Google Play hiện không hỗ trợ thuộc tính này trong việc lọc (trên Android 3.2), vì vậy bạn nên tiếp tục sử dụng các thuộc tính kích thước khác nếu ứng dụng không hỗ trợ màn hình nhỏ.

Thuộc tính này đã ra mắt trong API cấp 13.

android:compatibleWidthLimitDp
Thuộc tính này cho phép bật chế độ tương thích với màn hình dưới dạng một tính năng tuỳ chọn đối với người dùng bằng cách chỉ định "chiều rộng màn hình nhỏ nhất" tối đa mà ứng dụng được thiết kế. Nếu lúc này, cạnh nhỏ nhất của màn hình thiết bị lớn hơn giá trị được chỉ định, bạn vẫn có thể cài đặt ứng dụng nhưng sẽ chạy ứng dụng đó ở chế độ tương thích với màn hình. Theo mặc định, chế độ tương thích với màn hình sẽ bị tắt và bố cục được thay đổi kích thước để vừa với màn hình như bình thường, nhưng sẽ có một nút trên thanh hệ thống cho phép người dùng bật và tắt chế độ tương thích với màn hình.

Nếu ứng dụng tương thích với tất cả các kích thước màn hình và bố cục của ứng dụng thay đổi kích thước đúng cách, bạn không cần sử dụng thuộc tính này.

Lưu ý: Hiện tại, chế độ tương thích màn hình chỉ mô phỏng màn hình của điện thoại di động có chiều rộng 320dp, vì vậy chế độ tương thích màn hình sẽ không được áp dụng nếu giá trị android:compatibleWidthLimitDp lớn hơn 320.

Thuộc tính này đã ra mắt trong API cấp 13.

android:largestWidthLimitDp
Thuộc tính này cho phép bạn chọn chế độ buộc bật tính năng chế độ tương thích với màn hình bằng cách chỉ định "chiều rộng màn hình nhỏ nhất" tối đa mà ứng dụng được thiết kế. Nếu lúc này cạnh nhỏ nhất của màn hình thiết bị lớn hơn giá trị được chỉ định, ứng dụng sẽ chạy ở chế độ tương thích với màn hình mà người dùng không thể vô hiệu hoá.

Nếu ứng dụng tương thích với tất cả các kích thước màn hình và bố cục của ứng dụng thay đổi kích thước đúng cách, bạn không cần sử dụng thuộc tính này. Nếu không, trước tiên bạn nên cân nhắc sử dụng thuộc tính android:compatibleWidthLimitDp. Bạn chỉ nên sử dụng thuộc tính android:largestWidthLimitDp nếu ứng dụng bị lỗi chức năng khi thay đổi kích thước phù hợp với các màn hình lớn hơn và chỉ nên sử dụng duy nhất chế độ tương thích với màn hình cho ứng dụng.

Lưu ý: Hiện tại, chế độ tương thích với màn hình chỉ mô phỏng màn hình của điện thoại di động có chiều rộng 320dp, vì vậy, chế độ tương thích với màn hình sẽ không được áp dụng nếu giá trị android:largestWidthLimitDp lớn hơn 320.

Thuộc tính này đã ra mắt trong API cấp 13.

ra mắt từ:
API cấp độ 4
xem thêm