SVG-Kit für Android
SVG Kit für Android ist eine flexible und schnelle Bibliothek, die SVG Tiny-Spezifikationen unterstützt
Beschreibung
Jedes Mal, wenn Sie Symbole, Hintergründe, Diagramme, Dokumentseiten oder Diagramme im Vektorformat malen müssen, benötigen Sie eine Möglichkeit, das einfach und möglicherweise ohne NDK, Cross-Compilation-Probleme, Leistungseinbußen usw. zu tun. Die erstaunliche Bibliothek, die von uns entwickelt wurde, macht es einfach: kein zusätzlicher Code, keine zusätzlichen Bibliotheken, kein Tuning.
Warum?
Wir haben viele Bibliotheken ausgewertet, von denen viele entweder zu langsam, aber überfunktioniert (wie das legendäre Apache Batik) oder zu kompliziert in der Wartung (wie NDK, librsvg und Probleme mit der richtigen Kompilierung für alle unterstützten Plattformen und Architekturen) waren. Wir wollten nur den Vektor-Hintergrund zeigen.
Deshalb haben wir uns entschlossen, unsere eigene Bibliothek zu erstellen. Und noch mehr haben wir einige Fähigkeiten hinzugefügt, die von „großen“ Bibliotheken nicht unterstützt werden. Sogar radiale Gradiente werden in unserer Bibliothek unterstützt.
Wir haben versucht, es so klein wie möglich zu machen. Keine erweiterten Funktionen von SVG 1.2. Vollständige Spezifikationen werden unterstützt. Wir gehen davon aus, dass wir keine Animationen, Kompositionen, JavaScript oder Benutzereingaben benötigen, sondern lediglich Vektor-Hintergründe oder -Symbole verwenden möchten.
Haupteigenschaften
Zusammenfassend haben wir jetzt:
- Sehr klein.
- Reines Java.
- Zuverlässig und schnell.
- CSS-Unterstützung.
- Gradiente (auch radial), Transformationen und Farben.
- Schriftarten, Texte und Textbereiche.
- Zeichnen von Grundelementen, Pfaden und Polygonen.
- Striche und Füllungen, einschließlich Alpha, Bindestriche, Verbindungen und andere.
- XLink-Unterstützung inklusive.
- Rasterbilder mit SVG-Unterstützung (extern, aus Assets oder eingebettet).
- Erstmalige Unterstützung für SVG-Filter.
- SVG- und SVGZ-Unterstützung.
Darüber hinaus haben wir riesige SVG-Dateien mit jeweils Dutzenden Megabyte getestet. Abhängig von den SVG-Dateien und dem Transport (lokal oder aus dem Internet) kann es „ziemlich schnell“ oder „akzeptabel“ sein, aber es funktioniert wirklich in allen Fällen.
Die folgenden Funktionen werden nicht unterstützt:
Deklarative Animation für SVG, interaktive und dynamische SVG-Dokumente, JavaScript, Rasterbilder in seltsamen Formaten, HTML-Tags.
Es ist nur eine kleine, schnelle und einfach zu bedienende Bibliothek, die so konzipiert ist, dass sie Symbole “reine Vektor”, Hintergründe usw. unterstützt. In dieser Phase gibt es keine Überlastung. Falls es jemand wünscht – unser Team erweitert die Bibliothek entsprechend seinen Bedürfnissen. Für unser Team ist das kein großes Problem.
Erste Schritte
Der Kern der Bibliothek ist „libsvg.aar“. Sie macht alles von schnellem SAX-basiertem Parsing, Rendering von .svg-Dateien für Android bei den Bitmaps und Oberflächen, Computern entsprechend in .svg definierte CSS-Stile und mehr. Das bietet eine API (in erster Linie SVGHelper Klasse), um mit Dateien in einer typischen Stream-ähnlichen Weise zu arbeiten.
Libsvg.aar unterstützt viele grafische Funktionen, die in SVG 1.1 und SVG 1.2 definiert sind. Aber es ist vorgesehen, nur statische Bilder ohne Animation, Filter und benutzerdefinierte SVG-Schriftarten zu bearbeiten.
Die Liste der Funktionen umfasst:
Zeichnen von Formen (Ellipse, Kreis, Polylinie, Viereck, Rechteck, Linie, usw.),
Zeichnen von Gradients (mit Ausnahme der Fokuspunkte in radialen Gradienten),
Zeichnen von Pfadelementen, aber ohne Markierungen,
Zeichnen von Textelementen, funktioniert derzeit nur mit Standard-Android-Schriften,
Unterstützt werden solche Elemente wie <g>, <defs>, <use>.
Die Liste der implementierten Funktionen ist nicht sehr lang, aber mehr als genug, um die meisten typischen SVG-Dateien zu malen.
SVGHelper: parse and get suitable result
Um dieses Hilfsmittel zu verwenden, gehen Sie einfach die folgende Liste von oben nach unten durch.
1. Fügen Sie „libsvg.aar“ in Ihr Projekt ein.
2. Wählen Sie die SVG-Quelle:
Aus der Datei:
SVGHelper.noContext().open (new File(...));
Aus Ressourcen (funktioniert nur mit Kontext, useContext(…) ist notwendig):
SVGHelper.useContext(context).open (R.raw.svg_file);
Aus dem Web:
SVGHelper.noContext().open (new URL(...));
SVG-Code direkt einstellen:
SVGHelper.noContext().open (“<svg> any svg source code </svg>”);
3. Bestimmen Sie die Größe des SVG-Dokuments (falls erforderlich). Diese Option ist erforderlich, wenn das ursprüngliche SVG-Bild keine Breiten-/Höhen- und Viewport-Attribute hat.
Definieren Sie Größen:
SVGHelper.noContext().open (...).setBaseBounds (300, 400);
Oder lassen Sie die Bibliothek selbst berechnen (wenn SVG eine Breiten-/Höhen-Definition hat),
SVGHelper.noContext().open (...).checkSVGSize();
Hinweis: Dies kann zu zusätzlichen Leistungseinbußen führen.
4. Auswahl der SVG-Transformation (falls erforderlich).
Skala direkt einstellen:
SVGHelper.noContext().open (...).setScale (1.7f);
Oder setzen Sie Ergebnisgrenzen:
SVGHelper.noContext().open (...).setRequestBounds (1024, 768);
5. Additional SVG transform options.
Legen Sie die Option Seitenverhältnis beibehalten fest (standardmäßig true):
SVGHelper.noContext().open (...).setKeepAspectRatio (false);
Legen Sie die Option Bild zuschneiden fest (standardmäßig falsch):
SVGHelper.noContext().open (...).setCropImage (true);
6. Wählen Sie den Ergebnistyp.
Bitmap:
SVGHelper.noContext().open (...).getBitmap ();
BitmapDrawable:
SVGHelper.useContext(context).open (...).getBitmapDrawable ();
Bitmap als Hintergrund einer beliebigen Ansicht:
SVGHelper.useContext(context).open (...).bitmapAsBackground (view);
Bild:
SVGHelper.noContext().open (...).getPicture ();
BildDrawable:
SVGHelper.noContext().open (...).getPictureDrawable ();
Bild als Stretch-Hintergrund einer beliebigen Ansicht:
SVGHelper.noContext().open (...).pictureAsBackground (view);
Hier ein paar Beispiele:
SVG aus der Ressource als Schaltflächenhintergrund:
SVGHelper.useContext(context).open (R.raw.svg).bitmapAsBackground (button);
Skalierte SVG-Datei als Bitmap:
SVGHelper.noContext().open (file).setScale (2f).getBitmap ();
SVG von der URL, bestimmen Sie seine Größe und erhalten Sie es als 100×100 Bitmap:
SVGHelper.noContext().open (url).checkSVGSize ().setRequestBounds (100,100).getBitmap ();
Wählen Sie Ihre Lizenz aus
Unten können Sie je nach Bedarf einen der verfügbaren Abrechnungspläne auswählen, von einer kostenlosen GPL-Lizenz bis hin zu einer unbegrenzten kommerziellen Lizenz. Sie können nicht finden, was Sie brauchen? Sehen Sie sich unsere kundenspezifischen Softwareentwicklungsdienste an.
Open Source
- Wir stellen diese Bibliothek „wie sie ist“ unter der zur Verfügung GPLv3.
- Quellen: libsvg.zip
$499*
- 1 Binärlizenz
- 1 Entwicklerin
- Unbegrenzte Anwendungen
*Mengenrabatte von 25 % für 5+ Lizenzen
$4999
- 1 Binärlizenz
- Unbegrenzte Entwickler
- Unbegrenzte Anwendungen
Zusätzliche Links
1. Demoanwendung, die angibt, wie lange das Bild auf Ihrem Gerät verarbeitet wird (showsvg.apk).
2. Beispiel, das beschreibt, wie SVG-Dateien aus verschiedenen Ressourcen (svg_from_different_sources_sample.apk) und Quellen (svg_from_different_sources_sample.zip) geladen werden.
3. Beispiel, das beschreibt, wie SVG als Hintergrund (svgresize_and_background_sample.apk) und Quelle (svgresize_and_background_sample.zip) verwendet wird.
4. JavaDocs (libsvg-JavaDoc.zip)