tło
Zauważyłem, że Android obsługuje teraz jakiś rodzaj rysowania wektorowego, poprzez klasę o nazwie „ VectorDrawable ” (a także AnimatedVectorDrawable , BTW). Dowiedziałem się o tym, patrząc na nowości w Android-Studio .
Zastanawiam się, czy będzie to koniec konieczności wprowadzenia wielu plików w wielu folderach ( mdpi
, hdpi
, xhdpi
, etc). Byłoby to świetne i może w niektórych przypadkach zminimalizować rozmiary aplikacji.
Pytania
Chciałbym zadać kilka pytań dotyczących tej nowej klasy:
Czy można go używać w starszych wersjach Androida, może za pośrednictwem biblioteki nawet biblioteki wsparcia Google?
Nie wiem, jak to działa, ale czy Lollipop obsługuje pliki SVG? Czy może zrobić coś, co można osiągnąć na plikach SVG?
Czy jest jakaś próbka / samouczek / film z jego używania, inny niż dokumentacja, którą znalazłem?
źródło
s a very usefull tool but I
takim przypadku uzyskałem niewłaściwy wynik i nie wiem, co jest nie tak ... Hmmm, do dalszego wydania chciałbym, aby to narzędzie zauważyło zły format ... Gdybym Używane czystych plików SVG z 3-Party libs wszystko jest w porządku ...Odpowiedzi:
AKTUALIZACJA W marcu 2016 r
Przez aktualizację Android Support Library 23.2.1 , obsługa rysunków wektorowych i animowanych rysunków wektorowych. (możesz również użyć najnowszego do tego samego)
Zaktualizuj wersję biblioteki w pliku gradle.
compile 'com.android.support:recyclerview-v7:23.2.1'
Obiekty wektorowe umożliwiają zastąpienie wielu zasobów png jedną grafiką wektorową zdefiniowaną w formacie XML. Choć wcześniej ograniczone do lizak i większych urządzeń , zarówno
VectorDrawable
iAnimatedVectorDrawable
są teraz dostępne za pośrednictwem dwóch nowych Pomoc Biblioteki support-vector-rozciągliwej i animowanych-wektor-rozciągliwej. nowyapp:srcCompat
atrybut do rysunków wektorów referencyjnych.Sprawdź źródło na githubie z kilkoma przykładowymi przykładami .
Zmiany w bibliotece Appcompat w wersji 7:
Przywrócono zależność od zasobów wektorowych, aby programiści używający biblioteki appcompat nie byli zmuszeni do korzystania z
VectorDrawable
jej flag kompilacji.źródło
compile
powyższego oświadczenia wynika, że projekt wykorzystuje,RecyclerView
co nie zawsze ma miejsce.Aktualizacja 2 : Włączają ją ponownie w bibliotece wsparcia 23.4.0:
Sprawdź dostępne teraz 23.4.0
Aktualizacja : to nie działa od wersji 23.3.0. Sprawdź tutaj, aby uzyskać szczegółowe informacje. Drawables proxy nie działają.
app:srcCompat
isetImageResource()
pracy.Obsługa Vector Drawable jest dostępna w Support Library w wersji 23.2 i nowszych. Jednak, aby właściwie używać tych rysunków, należy odwoływać się do nich pośrednio.
Pierwszym krokiem byłoby podbicie
AppCompat
wersji.compile 'com.android.support:appcompat-v7:23.2.0'
Po drugie włącz obsługę Vector Drawable. Jeśli używasz wtyczki Gradle, wersja 2.0+
android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
Inaczej
android { defaultConfig { generatedDensities = [] } aaptOptions { additionalParameters "--no-version-vectors" } }
Po trzecie , odnieś się do połączonej odpowiedzi .
źródło
MenuItem
, co działa dobrze.Możesz wypróbować tę bibliotekę pomocy . Obsługuje VectorDrawable i AnimatedVectorDrawable wprowadzone w Lollipop z pełną kompatybilnością wsteczną.
źródło
Aby uzupełnić niektóre odpowiedzi tutaj: tak, możesz uzyskać wsparcie dla VectorDrawables przed Lollipop , przynajmniej częściowo.
Jak częściowe? To zależy - zrobiłem ten diagram jako pomoc (ważny dla Support Library 23.4.0 do - co najmniej - 25.1.0).
źródło
Niestety, w tym momencie VectorDrawable i AnimatedVectorDrawable nie są dostępne w bibliotece wsparcia. Ale aby skorzystać z tej funkcji w wersjach Pre-Lollipop, możesz użyć nieoficjalnego backportu o nazwie MrVector.
MrVector jest dostępny na Github i będzie obsługiwał Androida w wersji 7+.
Z oficjalnego pliku Readme
Aby dodać zależność MrVector, dodaj następujący wiersz do bloku zależności build.gradle.
compile 'com.telly:mrvector:0.2.0'
Aby utworzyć rysowalny z wektorowego XML,
Mam nadzieję że to pomoże.
źródło
Jeśli używasz VectorDrawable, Android Studio automatycznie wygeneruje odpowiednie pliki PNG (na podstawie Twoich plików XML) dla wersji Pre-Lollipop.
Zwróć uwagę, że te wygenerowane pliki PNG są uważane za BitmapDrawables zamiast VectorDrawables na urządzeniach z interfejsem API poniżej 21 i dlatego nie mogą być animowane ani podobne na tych urządzeniach.
Aby uzyskać więcej informacji, zobacz „kompatybilność wsteczna”: http://android-developers.blogspot.co.at/2015/09/android-studio-14.html
źródło
Lollipop nie obsługuje plików SVG bez bibliotek innych firm.
Najlepszym rozwiązaniem, jakie znalazłem, jest biblioteka BetterVectorDrawable wraz z konwerterem SVG na VectorDrawable .
BetterVectorDrawable to implementacja VectorDrawable dla systemu Android 4.0+ z konfigurowalnym zachowaniem awaryjnym w systemie Android 5.0+.
SVG to VectorDrawable Converter to wsadowy konwerter obrazów SVG na pliki zasobów XML VectorDrawable w systemie Android. Wersja online
Linki prowadzą do plików readmes, które zawierają wystarczającą ilość informacji na temat korzystania z biblioteki lib i konwertera.
źródło
W tej chwili w bibliotece pomocy technicznej nie ma VectorDrawables.
Funkystein ma rację - VectorDrawable jest podobny do SVG, obsługuje tylko te funkcje rysowania wektorowego, które są najbardziej pożądane, dzięki czemu Android może skupić się na wydajności. Na przykład pathData ma taki sam format jak ciąg „d” SVG.
źródło
Wspaniałą wiadomością jest to, że firma Google udostępniła bibliotekę obsługi systemu Android w wersji 23.2 obsługującej rysunki wektorowe i animowane rysunki wektorowe!
Ale dzięki dla ludzi, którzy przenieśli tę bibliotekę przed Google!
Przewodnik do użycia:
Odwołaj się do „ wieku-wektorów ” autorstwa @chrisbanes
źródło