Android で SVG
以下ブログを参考にさせてもらって調査してみた。
僕が SVG を使ってやりたいことは以下。
- 同じリソースで異なる色で使いたい
- 解像度毎にリソースを用意しなくてよいようにしたい
色は、色だけに色々な方法で変えられるようだ。上記ブログでは SVG の String を直接 replace しているが、svg-android ライブラリには以下のメソッドが用意されていて、こちらの方がより安全だと思われる。SAX で処理するようなので、置換のオーバーヘッドもないはず。
getSVGFromString(java.lang.String svgData, int searchColor, int replaceColor)
解像度のほうは調べた限り、svg-android ではどうにもならないっぽい。svg-android を使用している svgwallpaper のソースコードを見ると、Canvas#scale() でアプリ側で対応するようになっている。でもこれって、SVG からラスターを生成した後に拡大・縮小していることになるので、SVG の意味がないな、と思ったけど、実際に動いているライブウォールペーパーを見ると、ぼやっとしておらず非常に鮮明なので、何か秘訣がありそうだ。