Obsługa formatu SVG w systemie Android

Odpowiedzi:

56

Najbardziej kompletna odpowiedź brzmi:

  • Domyślna przeglądarka systemu Android 2.x nie obsługuje natywnie formatu SVG.
  • Domyślne przeglądarki systemu Android 3+ obsługują format SVG.

Aby dodać obsługę SVG do wersji 2.x platformy, masz dwie podstawowe możliwości:

  1. Zainstaluj bardziej wydajną przeglądarkę (np. Firefox lub Opera Mobile - obie obsługują SVG)
  2. Użyj wypełnienia JavaScript, który może analizować SVG i renderować go na kanwie HTML5

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!

Todd
źródło
Witam, chciałbym wiedzieć w przypadku ImageView, czy mogę zmienić kolor tego środowiska uruchomieniowego obrazu svg?
Shreyash Mahajan
22

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.

pensy90
źródło
Aby nie przegapić, dodam tutaj komentarz (jak wspomniano w odpowiedzi @ Todda) Android 3+ obsługuje SVG. Dlatego programiści nie muszą martwić się o biblioteki, jeśli nie martwią się o starsze urządzenia z Androidem.
monotasker
9
W mojej odpowiedzi mam na myśli bibliotekę, która umożliwia programistom ładowanie i renderowanie plików SVG w ich aplikacjach. Android 3+ dodaje obsługę SVG w przeglądarce, ale nie ma obsługi SVG w swoim API dla programistów.
pensy 90
Ten niestety nie działał dla mnie z Androidem 4.3. Przykładowy obraz jest pusty. Używam dokładnego kodu, który znajduje się na stronie samouczka na Wiki.
BVB
2
@BVB będziesz musiał wyłączyć akcelerację sprzętową, aby działał na Androidzie 4.x. Zobacz: stackoverflow.com/questions/10384613/… i stackoverflow.com/questions/8771219/…
pents90
Dzięki, ale czy nie będzie to miało negatywnych skutków gdzie indziej?
BVB
8

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, SVGImageViewktó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

Abid H. Mujtaba
źródło
Ta biblioteka svg faktycznie działa. svg-android i jego forks nie zastosowały stylów / css, które zdefiniowałem w grupie dla dzieci grupy. Ten ma. Dziękuję Ci.
domenukk
1

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.

Bartek
źródło
1

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 ()

Surya
źródło
0

Firefox dla Androida obsługuje format SVG.

Zuuum
źródło