<supports-screens>

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 ý: Chế độ tương thích màn hình không phải là chế độ mà bạn muốn ứng dụng chạy. 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 hướng dẫn trong bài viết 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 nhiều kích thước màn hình.

Một ứng dụng có thể "hỗ trợ" một kích thước màn hình có sẵn nếu nó biết cách đổi kích thước phù hợp để lấp đầy toàn bộ màn hình. Chế độ đổi 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. 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, bạn cần tối ưu hoá giao diện người dùng của ứng dụng cho nhiều kích thước màn hình bằng cách cung cấp tài nguyên bố cục thay thế. Ví dụ: bạn nên sửa đổ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 của bạn hoạt động không tốt khi đổi kích thước để phù hợp với nhiều kích thước màn hình, thì bạn có thể dùng các thuộc tính của phần tử <supports-screens> để kiểm soát xem liệu ứng dụng đó chỉ được phân phối cho các màn hình nhỏ hơn hay sẽ được phóng to hoặc "thu phóng" giao diện người dùng để vừa với màn hình lớn hơn bằng chế độ tương thích màn hình của hệ thống.

Nếu bạn không thiết kế cho các 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, thì chế độ tương thích màn hình sẽ điều chỉnh giao diện người dùng theo tỷ lệ bằng cách mô phỏng một màn hình có kích thước bình thường và mật độ trung bình. Sau đó, giao diện người dùng sẽ phóng to để lấp đầy toàn bộ màn hình. Lưu ý rằng việc 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 đã ra mắt các thuộc tính mới: android:requiresSmallestWidthDp, android:compatibleWidthLimitDpandroid:largestWidthLimitDp. Nếu bạn đang triển khai ứng dụng dành cho Android 3.2 trở lên, hãy dùng các thuộc tính này để khai báo tính năng 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 về chế độ tương thích màn hình

Chế độ tương thích 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 màn hình có kích thước lớn hơn. Đây không phải là chế độ bạn muốn ứng dụng chạy vì nó có thể mang lại trải nghiệm không tốt cho người dùng. Có 2 phiên bản chế độ tương thích màn hình dựa trên phiên bản của thiết bị chạy ứng dụng.

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 320 dp x 480 dp với đường viền màu đen lấp đầy khu vực còn lại của màn hình.

Trên Android 3.2 trở lên, hệ thống sắp xếp bố cục như trên màn hình 320 dp x 480 dp, sau đó phóng to lên để lấp đầy màn hình. Việc này thường gây ra các hiện tượng như làm mờ và 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 sao cho 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 bài viết 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ể đổ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 thành "false", hệ thống sẽ chạy ứng dụng của bạn ở chế độ tương thích màn hình trên màn hình lớn.

Thuộc tính này không được dùng nữa. 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 tính năng hỗ trợ nhiều màn hình được ra mắt lần đầu. Đừng sử dụng thuộc tính này.

android:smallScreens
Cho biết ứng dụng có hỗ trợ các hệ số hình dạng cho màn hình "nhỏ" 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" hay 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 chạy được trên những thiết bị có màn hình nhỏ từ các dịch vụ bên ngoài (chẳng hạn như Google Play), vì nền tảng này 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ố hình dạng cho 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ố hình dạng cho màn hình "lớ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 điện thoại di động "bình thường". Do đó, bạn có thể phải đặc biệt chú ý đến thuộc tính của ứng dụng để dùng cho hiệu quả, mặc dù hệ thống có thể phải đổi kích thước của ứng dụng để lấp đầy màn hình.

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 khai báo rõ ràng thuộc tính này. Xin lưu ý rằng việc đặt thuộc tính này thành "false" thường sẽ bật chế độ tương thích màn hình.

android:xlargeScreens
Cho biết ứng dụng có hỗ trợ các hệ số hình dạng cho màn hình "cực lớn" hay không. Màn hình cực lớn đượ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 thiết bị nào đó còn lớn hơn nữa. Bạn có thể phải đặc biệt chú ý đến thuộc tính của ứng dụng để dùng cho hiệu quả, mặc dù hệ thống có thể phải đổi kích thước của ứng dụng để lấp đầy màn hình.

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 khai báo rõ ràng thuộc tính này. Xin lưu ý rằng việc đặt thuộc tính này thành "false" thường sẽ bật chế độ tương thích màn hình.

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 là "true" theo mặc định. Không đặt thuộc tính này thành "false" trừ phi bạn hoàn toàn chắc chắn rằng điều đó là cần thiết để ứng dụng hoạt động. Thời điểm duy nhất có thể cần tắt thuộc tính này là khi ứng dụng của bạn trực tiếp điều khiển bitmap. Để biết thêm thông tin, hãy xem bài viết Tổng quan về khả năng tương thích với màn hình.

android:requiresSmallestWidthDp
Chỉ định smallestWidth tối thiểu cần thiết cho ứng dụng. smallestWidth là kích thước 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ó. Đó là kích thước ngắn nhất trong 2 kích thước màn hình có sẵn.

Để được coi là tương thích với ứng dụng, thiết bị phải có smallestWidth bằng hoặc lớn hơn giá trị này. Thông thường, giá trị bạn 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ó smallestWidth là 320 dp, máy tính bảng 7 inch có smallestWidth là 600 dp và máy tính bảng 10 inch có smallestWidth là 720 dp. Các giá trị này thường là smallestWidth vì đây là kích thước ngắn nhất của không gian màn hình có sẵn.

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

Nếu ứng dụng đổi kích thước cho 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à 320 dp), thì bạn không cần phải dùng thuộc tính này. Nếu không, hãy cung cấp cho thuộc tính này một giá trị khớp với giá trị nhỏ nhất mà ứng dụng dùng cho bộ hạn định chiều rộng màn hình nhỏ nhất (sw<N>dp).

Thận trọng: Hệ thống Android không chú ý đến thuộc tính này, vì vậy, nó 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 để bậ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 để lọc trên Android 3.2. Vì vậy, hãy tiếp tục dùng các thuộc tính kích thước khác nếu ứng dụng của bạn 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ạn bật chế độ tương thích 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, thì người dùng vẫn có thể cài đặt ứng dụng của bạn nhưng sẽ được đề xuất để chạy ứng dụng đó ở chế độ tương thích màn hình.

Theo mặc định, chế độ tương thích màn hình sẽ bị tắt và bố cục sẽ đổi kích thước để vừa với màn hình như bình thường. Sẽ có một nút trên thanh hệ thống cho phép người dùng bật/tắt chế độ tương thích màn hình.

Nếu ứng dụng tương thích với mọi kích thước màn hình và bố cục của ứng dụng đổi kích thước phù hợp, thì bạn không cần 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 là 320 dp. 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 buộc bật chế độ tương thích 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, thì ứng dụng sẽ chạy ở chế độ tương thích màn hình mà người dùng không thể tắt được.

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

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 là 320 dp. Vì vậy, chế độ tương thích 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: