Czy Android obsługuje SVG? jakiś przykład?
Czy Android obsługuje SVG? jakiś przykład?
Odpowiedzi:
Najbardziej kompletna odpowiedź brzmi:
Aby dodać obsługę SVG do wersji 2.x platformy, masz dwie podstawowe możliwości:
Pierwsza opcja jest w porządku, jeśli próbujesz sprawić, by SVG działało do użytku osobistego lub ograniczonej (kontrolowanej) grupy użytkowników. Nie jest to świetna opcja, jeśli chcesz używać SVG do kierowania na dużą, niekontrolowaną bazę użytkowników.
W późniejszym przypadku chcesz użyć wypełnienia. Obecnie dostępnych jest wiele bibliotek JavaScript, które mogą przetwarzać SVG i renderować na płótnie. Oto dwa przykłady:
Korzystając z polyfill, możesz renderować swoje pliki SVG w kanatach we wszystkich wersjach Androida 2.x.
Aby uzyskać pełniejszy przykład tego podejścia, możesz odwołać się do tego wpisu na blogu, w którym omówiono użycie polyfill canvg do tworzenia wykresów DataViz Kendo UI (opartych na SVG) w systemie Android 2.x. Mam nadzieję, że to pomoże!
Dostępna jest nowa biblioteka open source, która obsługuje ładowanie i rysowanie plików SVG Basic 1.1: https://github.com/pents90/svg-android . Wydajność jest dobra, ponieważ rzeczywisty rysunek jest obsługiwany natywnie przez obiekt android.graphics.Picture.
Obecnie niektórzy ludzie, w tym ja, pracują nad tym samodzielnie.
Możesz znaleźć działające rozwiązanie w tych artykułach:
Android. ImageView z obsługą SVG.
Android ImageView i Drawable z obsługą SVG
Jest nowa biblioteka (w fazie rozwoju) androidsvg, która pozwala na włączanie obrazów svg bezpośrednio do projektów. Ma tę zaletę, że definiuje, SVGImageView
który pozwala na włączenie svg bezpośrednio do XML układu.
Wreszcie, dołączanie svg do Androida jest proste.
Więcej szczegółów: wpis dotyczący przepełnienia stosu
Android obsługuje rysunki wektorowe: https://developer.android.com/reference/android/graphics/drawable/VectorDrawable.html
I istnieje Android SVG to VectorDrawable Converter: http://inloop.github.io/svg2android/
Rzuciłem okiem na https://code.google.com/p/androidsvg/ . Do tej pory wyświetlono wszystkie pliki SVG, które wrzuciłem. Wygląda obiecująco.
Właśnie wyrzuciłem repozytorium Github i przykładowe repozytorium dla mojej własnej biblioteki TPSVG, którą pierwotnie stworzyłem specjalnie dla mojej aplikacji.
Wiem, że moje rozwiązanie jest nieco hardcore'owe, ale działa świetnie, nie wymaga żadnych zewnętrznych bibliotek (przynajmniej nie w twoim ostatecznym kodzie) i jest niezwykle szybkie.
1) Po prostu weź istniejącą bibliotekę ładującą SVG, taką jak na przykład svg-android-2 (która jest rozwidleniem svg-android wspomnianym w innej odpowiedzi, tylko z większą liczbą funkcji i poprawek błędów): https://code.google.com / p / svg-android-2 /
2) Napisz prostą aplikację, która nie zrobi nic poza ładowaniem i wyświetlaniem obrazu SVG.
3) Zmodyfikuj bibliotekę ładującą SVG, aby drukowała kod Java, który tworzy klasę Picture, lub zapisuje go w zmiennej String.
4) Skopiuj i wklej uzyskany w ten sposób kod Java do aplikacji, którą piszesz.
Aby uzyskać więcej informacji na temat tej techniki i pobrać przykładowy kod źródłowy, przejdź do mojego bloga: http://androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-android.html
Możesz pobrać działający przykład tej techniki z Google Play tutaj: https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.svgtodrawablesample
Oto przykład komercyjnej aplikacji stworzonej tą techniką (mapa metra w Mediolanie): https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.atmmetroplan
Zwróć uwagę, jak szybko mapa się ładuje i jak ładnie wygląda, nawet po powiększeniu.
Sprawdź wektor wsparcia do rysowania . Studio Android ma narzędzie do konwersji plików SVG do plików .XML.
podczas korzystania z AppCompat z ImageView (lub podklas, takich jak ImageButton i FloatingActionButton), będziesz mógł użyć nowego atrybutu app: srcCompat do odwoływania się do rysunków wektorowych (a także innych elementów rysunkowych dostępnych dla android: src):
Począwszy od biblioteki obsługi systemu Android 23.3.0, elementy rysunkowe wektorów wsparcia można ładować tylko za pośrednictwem aplikacji: srcCompat lub setImageResource ()
Opera Mobile na Androida obsługuje format svg, a Opera Mini obsługuje statyczne pliki svg.