VectorDrawable - czy jest on dostępny w wersji pre-Lollipop na Androida? [zamknięte]
Chcesz poprawić to pytanie? Update the question so it edytując ten post.
Zamknięte 1 rok temu .
Popraw to pytanieTło
Zauważyłem, że Android obsługuje teraz jakiś rodzaj rysunku wektorowego, poprzez klasę o nazwie "VectorDrawable" (a także AnimatedVectorDrawable, BTW). Znalazłem o tym patrząc na to, co nowego na Android-Studio.
Zastanawiam się, czy to byłby koniec konieczności umieszczania wielu plików w wielu folderach (mdpi
, hdpi
, xhdpi
, itp.). Byłoby to świetne i mogłoby zminimalizować rozmiary aplikacji w niektórych przypadkach.
Pytania
Chciałbym zadać kilka pytań dotyczących tej nowej klasy:
Czy można go używać w starszym Androidzie wersje, może przez Bibliotekę nawet biblioteki wsparcia Google?
Nie wiem jak to działa, ale czy Lollipop radzi sobie z plikami SVG? Czy można zrobić coś, co jest osiągalne na plikach SVG?
Czy istnieje jakaś próbka / samouczek / film z jego używania, inna niż dokumentacja, którą znalazłem?
9 answers
Aktualizacja na Marzec 2016
By Android Support Library 23.2.1 update, Obsługa rysunków wektorowych i animowanych rysunków wektorowych. (Możesz również użyć latestone do tego samego)
Proszę zaktualizować wersję biblioteki w pliku gradle.
compile 'com.android.support:recyclerview-v7:23.2.1'
Rysunki wektorowe pozwalają zastąpić wiele zasobów png pojedynczą grafiką wektorową, zdefiniowaną w XML. podczas gdy wcześniej ograniczano się do lizaków i urządzeń wyższych , ZARÓWNO VectorDrawable
, jak i AnimatedVectorDrawable
są teraz dostępne w dwóch nowych bibliotekach wsparcia support-vector-drawable i animated-vector-drawable. nowy atrybut app:srcCompat
do rysunków wektorów odniesienia .
Sprawdź źródło na github z przykładowymi przykładami .
Zmiany w bibliotece appcompat v7:
Przywrócono zależność od zasobów wektorowych, dzięki czemu programiści korzystający z biblioteki appcompat nie są zmuszeni do używania VectorDrawable
i powiązanych z nią FLAG budowania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-01 13:27:09
Update 2 : włączają go ponownie w Bibliotece wsparcia 23.4.0:
Dla użytkowników AppCompat dodaliśmy opt-in API, aby ponownie włączyć rysowanie wektorów wsparcia z zasobów (zachowanie Znalezione w 23.2) za pomocą AppCompatDelegate.setCompatVectorFromResourcesEnabled ( true) - należy pamiętać, że nadal może to powodować problemy z wykorzystaniem pamięci i problemy z aktualizacją instancji konfiguracji, dlatego jest domyślnie wyłączona.
Sprawdź to 23.4.0 dostępny teraz
Update: to nie działa od wersji 23.3.0
Sprawdź tutaj aby uzyskać szczegóły.
Proxy drawables nie działa. app:srcCompat
i setImageResource()
działają jednak.
Obsługa rysowania wektorowego jest dostępna z biblioteki wsparcia w wersji 23.2 i nowszej. Jednak, aby prawidłowo korzystać z tych drawables, muszą być wymienione pośrednio.
Pierwszym krokiem {[8] } będzie wybranie wersji AppCompat
.
compile 'com.android.support:appcompat-v7:23.2.0'
Second enable Vector Drawable wsparcie. Jeśli używasz wtyczki Gradle, 2.0 +
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Inaczej
android {
defaultConfig {
generatedDensities = []
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:26
Możesz wypróbować tę bibliotekę wsparcia . Obsługuje vectordrawable i AnimatedVectorDrawable wprowadzone w Lollipop z pełną kompatybilnością wsteczną.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-19 17:23:19
Aby uzupełnić niektóre odpowiedzi tutaj: tak, możesz uzyskać wsparcie dla vectordrawables pre-Lollipop , przynajmniej częściowe.
Jak częściowy? To zależy - zrobiłem ten diagram do pomocy (ważny dla biblioteki wsparcia 23.4.0 do - co najmniej - 25.1.0).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-25 17:12:29
Niestety w tej chwili 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 w Github i będzie obsługiwał Androida w wersji 7+.
Z oficjalnego Readme
Aby dodać zależność MrVector dodaj następującą linię do swojej kompilacji.gradle dependencies block.
compile 'com.telly:mrvector:0.2.0'
To tworzenie drawable z wektora XML,
Drawable drawable = MrVector.inflate(getResources(), R.drawable.vector_android);
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-22 09:02:38
Jeśli używasz VectorDrawable, Android Studio automatycznie wygeneruje według plików PNG (na podstawie plików XML) dla wersji Pre-Lollipop.
Należy pamiętać, że te wygenerowane pliki PNG są uważane za BitmapDrawables zamiast VectorDrawables na urządzeniach z API poniżej 21 i dlatego nie mogą być animowane lub podobne na tych urządzeniach.
Patrz "zgodność wsteczna" dla dalszych szczegóły: http://android-developers.blogspot.co.at/2015/09/android-studio-14.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 10:06:19
Lollipop nie może obsługiwać plików SVG bez bibliotek stron trzecich.
Najlepszym rozwiązaniem jest BetterVectorDrawable lib wraz z konwerterem SVG na Vectordrawable .
BetterVectorDrawable jest implementacją VectorDrawable dla Androida 4.0 + z konfigurowalnym zachowaniem awaryjnym na Androidzie 5.0+.
SVG to Vectordrawable Converter jest konwerterem wsadowym obrazów SVG do plików zasobów XML Vectordrawable systemu Android. wersja Online
Linki wskazują na readmes, które dostarczają wystarczających informacji o tym, jak korzystać z lib i konwertera.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-25 11:06:16
W tej chwili nie ma VectorDrawables w bibliotece wsparcia.
Funkystein ma rację -- VECTORDRAWABLE jest podobny do SVG, tylko obsługuje funkcje rysowania wektorowego, które są najbardziej pożądane, aby android mógł skupić się na wydajności. na przykład pathData ma taki sam format jak ciąg " D " SVG.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-24 20:04:04
Wspaniałą wiadomością jest to, że Google wydała Android Support Library 23.2 Wsparcie wektorowych rysunków i animowanych rysunków wektorowych!
Ale dzięki idź do ludzi, którzy przenieśli tę bibliotekę przed Google!
Tutaj biblioteki AppCompat są świetne, mogą przynieść wiele nowych funkcji Androida z powrotem do znacznie wcześniejszych wersji. Z nowo zaimplementowana Klasa VectorDrawable, programiści mogą teraz używać vector obrazy z powrotem do API 7 (Android 2.1 Eclair). Animowane wektory są nieco bardziej ograniczone, idąc tylko tak daleko, jak API 11 (Android 3.0 Honeycomb), ale nadal obejmuje ponad 97% urządzenia w aktywnym użyciu dzisiaj
Instrukcja użycia:
Refer "age-of-the-vectors" by @ chrisbanes
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-15 14:43:35