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

Kenji Abe

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

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

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Kenji Abe
Kenji Abe

Written by Kenji Abe

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

No responses yet

Write a response