Jeśli używasz kreatora Vector Asset w Android Studio 1.5.0, każdy plik XML do rysowania wektorowego, który importujesz za pomocą tego kreatora, trafia do pliku res/drawable/
.
Jednak build/
katalog i wynikowy plik APK pokazują, że te pliki XML są przenoszone do res/drawable-anydpi-v21/
katalogu zasobów. Ta -v21
część ma sens, ponieważ VectorDrawable
jest obsługiwana tylko na poziomie API 21+. Jednak -anydpi
wydaje się , że nie jest udokumentowany. Spodziewałbym się -nodpi
, zarówno dla pierwotnego miejsca docelowego importu, jak i miejsca, w którym system kompilacji zdecyduje się go przenieść.
Czy ktoś widział oficjalne oświadczenia dotyczące tego -anydpi
, co oznacza iz czym jest związek -nodpi
? Szukam praktycznych efektów, a nie tylko tego, co podpowiadają niektóre komentarze do kodu.
źródło
Odpowiedzi:
nodpi
Na przykład:
Kropka będzie mała na xxhdpi, duża na ldpi.
Jednak program rozpoznawania zasobów będzie pasował do określonego kwalifikatora, jeśli istnieje.
Na przykład
Na urządzeniu HDpi Lollipop (API 21) używana jest mapa bitowa .
W urządzeniu Lollipop (API 21) xhdpi używany jest wektor.
anydpi
Na przykład
Na urządzeniu HDpi Lollipop (API 21) używany jest wektor .
W urządzeniu Lollipop (API 21) xhdpi używany jest wektor.
Odniesienie
Uwaga : dodano anydpi w zmianie Ic3288d0236fe0bff20bb1599aba2582c25b0db32 .
źródło
drawable
. Zachowanie SDK mogło ulec zmianie. Zobacz VectorDrawable: Android ładuje pliki PNG w formacie xhdpi zamiast zasobu wektorowegodrawable
katalogiem zasobów, tak jak oba katalogi, które zacytowałem w mojej nagrodzie, sądrawable
katalogami zasobów.-xxhdpi
urządzeniu. Mamres/drawable-mdpi/nodpi_and_m.png
ires/drawable-nodpi/nodpi_and_m.xml
. Na urządzeniu Nexus 5-xxhdpi
używany zasób tores/drawable-nodpi/nodpi_and_m.xml
. Zgodnie z twoim algorytmem i moimi oczekiwaniamires/drawable-mdpi/nodpi_and_m.png
powinien być używany. To nie jest to, co się dzieje.drawable-anydpi-v21
. Jeśli masz bibliotekę do rysowania wektorów nośnych, możesz ją umieścić wdrawable-anydpi
lub po prostudrawable
.Kod źródłowy zawiera następujące uwagi (linia 639):
Mam nadzieję, że to usunie zamieszanie.
źródło
-nodpi
katalogach z pewnością są skalowane w oparciu o rozmiar, zgodnie z wszelkimi regułami dotyczącymi tego, jak używany jest element do rysowania.nodpi
: Zasoby dla wszystkich gęstości. Są to zasoby niezależne od gęstości. System nie skaluje zasobów oznaczonych tym kwalifikatorem, niezależnie od gęstości bieżącego ekranu.anydpi
: Ten kwalifikator pasuje do wszystkich gęstości ekranu i ma pierwszeństwo przed innymi kwalifikatorami. Jest to przydatne w przypadku rysunków wektorowych. Dodano na poziomie API 21.źródło
Używam drawable-nodpi do wszystkiego, łącznie z dużą ilością dużych grafik do mojej gry. Jedną z nieudokumentowanych konsekwencji skalowania grafiki w górę jest wykładniczy wzrost zużycia pamięci. Więc jeśli masz grafikę o wielkości 1 MB do rysowania, zostanie ona przeskalowana do 4 MB, 16 MB lub 64 MB w zależności od rozdzielczości urządzenia użytkownika. A rozdzielczości urządzeń stale rosną. To skalowanie w rzeczywistości nie zwiększa oczywiście ostrości grafiki. Czynności związane z rysowaniem mogą i tak wskazywać, jak duża powinna być każda grafika w stosunku do rozmiaru ekranu, bez potrzeby nadmuchiwania aplikacji wieloma folderami rysowania.
źródło