Android Studioを使わずにSVGからVector Drawableに変換する

Kenji Abe
Jun 22, 2024

--

Photo by vackground.com on Unsplash

AndroidでSVGを扱えますが、SVGファイルを扱うにはVector Drawableにする必要があります。

基本的にはAndroid Studioを使うのが一番手っ取り早いですが、Android Studioが無くても変換する方法がないかを調べました。

Android Studioでやる方法は以下を見てください。

(ちなみにこのドキュメントには載ってないですが、Android StudioのResource Managerを開いてドラッグ&ドロップするのが一番楽です)

SVGからVector Drawableに変換しているコード

Androidは基本的にオープンソースになっているので、探せばどこかにあるかなと思って、色々探しました。

探した結果、 Svg2Vector というクラスを見つけました。
Svg2Vector.parseSvgToXml というのを使えば簡単に出来そうです。

では、これをどう入手するかなんですが、色々と調べた結果、 com.android.tools:sdk-common を依存関係に追加するだけで使えそうです。

Google Mavenのほうで提供されています。おそらくバージョンはAndroid Studioと関連していそうです。

KotlinでSVGからVector Drawableに変換する

Gradleに依存関係として追加します。

dependencies {
implementation("com.android.tools:sdk-common:31.5.0")
}

あとは以下のようなコードを書くだけです。

val svgPath: Path = File("<SVGファイルのパス>").toPath()
val byteArrayOutputStream = ByteArrayOutputStream()

// SVGからVector DrawableのXMLに変換
Svg2Vector.parseSvgToXml(
svgPath,
byteArrayOutputStream
)

// ファイル書き出し
FileOutputStream("<出力するVector DrawableのXMLのパス>").use {
byteArrayOutputStream.writeTo(it)
}

これが出来れば、自動化などにも組み込むことが出来そうです。

Sign up to discover human stories that deepen your understanding of the world.

--

--

Kenji Abe
Kenji Abe

Written by Kenji Abe

Programmer / Gamer / Google Developers Expert for Android, Kotlin / @STAR_ZERO

No responses yet

Write a response