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)
}
これが出来れば、自動化などにも組み込むことが出来そうです。