2015-03-12 28 views
6

Tôi đang cố sử dụng VectorDrawable trên API21, nhưng Android tải tài nguyên PNG từ thư mục xxhdpi thay thế. hiện res cấu trúc của tôi như sau:VectorDrawable: Android tải xhdpi PNG thay vì tài nguyên vectơ

  • res
    • drawable-xxhdpi
      • test_icon.png
    • drawable-21
      • test_icon.xml

Và bố trí XML của tôi:

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/test_icon"/> 

Có cách nào khác để giải quyết này? Từ sự hiểu biết của tôi, Android sẽ luôn chọn tài nguyên PNG, nhưng nếu đó là trường hợp, cách người ta có thể sử dụng VectorDrawables cho API21 và PNG cho API thấp hơn?

[Cập nhật 1]

Nếu chúng ta sử dụng một thư mục drawable-xxhdpi-21 tài nguyên, Android sẽ chọn vector thay vì tài nguyên PNG. Nhưng điều đó có nghĩa là chúng tôi cũng sẽ phải có bản sao (hoặc liên kết tượng trưng) của tệp cho các mật độ khác (ví dụ: xhdpi, hdpi, v.v.)

+0

gì về nodpi-21? Điều đó không giải quyết được? –

+0

Thôi nào, đóng câu hỏi –

+0

@pengrad buddy bình luận không cần thiết ... –

Trả lời

1

Giải pháp tôi tìm thấy có vẻ hơi khó khăn nhưng có vẻ hoạt động. Thay vì đặt các tệp tin VertorDrawable xml của bạn vào mỗi thùng với phiên bản, nếu bạn đặt chúng trong drawable-w1dp-v21, nó sẽ chiếm đúng tài nguyên và không cần phải có nhiều bản sao.

Điều này là do, khi quyết định tài nguyên để sử dụng, Android sẽ kiểm tra mật độ và sau khi mật độ rộng tối thiểu, mà trong trường hợp này phải lúc nào cũng sẽ có nhiều hơn 1dp :)

Cập nhật: như @pengrad đề cập đến cách tốt nhất để sử dụng nhóm anydpi. :)

Các vấn đề liên quan