Android: Sử dụng Alternative Resource

Alternative resource có thể hiểu là các “resource có chọn lựa.”

+ Default resource là các resource mà bạn không cần quan tâm chúng hiển thị thế nào cho từng loại thiết bị.

+ Thì alternative resource là các resource mà bạn chính là người phải chỉ định cho hệ thống biết khi nào nên dùng resource nào, chọn lựa resource theo ý bạn.

1. Config Theo Ngôn Ngữ Và Quốc Gia

Config này giúp ứng dụng phân biệt resource theo Ngôn Ngữ và Quốc Gia

res/
    values/
        strings.xml    (default)
    values-en/
        strings.xml    (tiếng Anh chung)
    values-en-rGB/
        strings.xml    (tiếng Anh-Anh)
    values-en-rUS/
        strings.xml    (tiếng Anh-Mỹ)

2. Config Theo Hướng Xoay Của Màn Hình

Bạn chỉ định -port cho màn hình đứng (portrait) và -land cho màn hình ngang (landscapse).

res/
    layout-port/
    layout-land/

3. Config Theo Mật Độ Điểm Ảnh – Density

Đây là cách hỗ trợ đa màn hình tốt nhất hiện nay, khi mà trên thị trường có rất nhiều thiết bị với rất nhiều kích cỡ màn hình cùng rất nhiều tỉ lệ điểm ảnh khác nhau, khi đó việc config dựa trên kích cỡ màn hình thôi như các cách trên là lỗi thời và việc dựa vào mật độ điểm ảnh sẽ hợp lý hơn nhiều.

Cách Thức Config

Bạn có thể phân biệt resource dựa trên các mật độ điểm ảnh sau.

-ldpi: dành cho các màn hình có mật độ điểm ảnh thấp, xấp xỉ 120dpi. Các màn hình với mật độ điểm ảnh thấp này dường như không còn hoặc còn rất ít trên thị trường nên bạn chú ý có thể không cần hỗ trợ resource theo config màn hình dạng này.
-mdpi: dành cho các màn hình có mật độ điểm ảnh trung bình, xấp xỉ 160dpi.
-hdpi: dành cho các màn hình có mật độ điểm ảnh cao, xấp xỉ 240dpi.
-xhdpi: dành cho các màn hình có mật độ điểm ảnh siêu-cao (extra-high), xấp xỉ 320dpi. Mật độ diểm ảnh này được thêm vào từ API level 8.
-xxhdpi: dành cho các màn hình có mật độ điểm ảnh siêu-siêu-cao (extra-extra-high), xấp xỉ 480dpi. Mật độ diểm ảnh này được thêm vào từ API level 16.
-xxxhdpi: dành cho các màn hình có mật độ điểm ảnh siêu-siêu-siêu-cao (extra-extra-extra-high), xấp xỉ 640dpi. Mật độ diểm ảnh này được thêm vào từ API level 18.
-nodpi: dùng để chứa các resource mà không muốn bị co dãn theo tỉ lệ màn hình.
-tvdpi: dành cho các màn hình có mật độ điểm ảnh trong khoảng giữa của mdpi và hdpi, xấp xỉ 213dpi. Mật độ điểm ảnh này dành cho ti-vi, với đa số các app hiện nay nếu không hỗ trợ cho ti-vi thì bạn không cần quan tâm đến config này cũng được.
-anydpi: dùng để chứa các resource dùng được cho tất cả các thể loại màn hình, tất nhiên là resource này sẽ không bị bể khi bị co dãn thoải mái ở các dạng màn hình khác nhau, đơn cử cho loại resource này đó chính là vector drawable. Nếu bạn nào quan tâm đến vector drawable thì có thể xem qua ở đây. Nhưng drawable dạng này chỉ mới xuất hiện từ API level 21 nên tính phổ biến cũng chưa cao.

res/
    layout-mdpi/
    layout-hdpi/
    layout-xhdpi/
    layout-xxhdpi/
    layout-xxxhdpi/

Xem thêm tại : yellowcodebooks

Nguyễn Linh

Chia sẻ để cùng tiến bộ...