はい、表題の通りですが今更感がある話です。

アプリ内で使うアイコンがたくさんある場合、解像度などで倍倍にリソースが増えていきます。
もともと端末に備わっているリソースを使い回せればいいのですが難しいときもあるかもしれません。

私がリリースしているManageBoxも色やサイズを自由にできるアイコンをたくさん用意する必要があったのでどうにか解決方法がないか探っていました。

やっていったことは

1.同じアイコンは解像度ごとだけにして、色はカラーフィルターで行う。

画像同士を組み合わせて作れるものはScaleDrawbleとLayerDrawbleを組み合わせて用意していく。
ただ、サイズを大きくするとボケるのでベースサイズよりは大きくさせれないし、ファイル数×解像度別 は残るのでファイル数は減らせない。



2.SVGファイルを利用する。
専用ライブラリを利用するか、WebViewで使える(OS3.0以降)。
自分はSVG Androidというライブラリを利用しOS2系でも使えるようにしてみた。

*WebViewの場合、なんか微妙っぽいとこもあるようなのでchromeViewというライブラリを使ってみるのもいいみたい。あとOS3.0以前でSVG使いたい場合はjava scriptでHTML5のファイルとして読み込めばいける。ここら辺はぐぐれば色々でてきます。

問題はSVG Androidだと大量のアイコンをロードすると遅すぎた。。。
*WebViewの方法は用意する前に3を思いついたので試しませんでした(・ω・;)



3.アイコンをフォントにする
アイコンをフォントデータにしてしまうこと。
自分で用意してもいいですがIconicDrawbleのようなライブラリを使って画像データにも簡単に直せます。

あと2.x 系では woff には非対応のようでttfを利用ですがそんなに気にならないかと。
それ以降ならwoffを使えるのでsvgと同じにも利用できます。

これならOS依存せず色やサイズも使いまわせ、早さも問題なし。サイズも何mbもあるファイルが数kbにできます。*自分の場合、約3mb以上のファイルを70kbにでけますた。

問題といえば単色のみということ(・ω・)
ここが問題なければ結構使える方法かなと思ってます。


ということで意外とフォントにするという方法も使えるなと気づいた自分でした。

*フォントの作成方法はフリーなどでも色々あるみたいです。
ただ自分が調べて見つけたソフトだと使用方法などで結構お勉強が必要?と感じました。。
場合によっては専用のフォントソフトを使ったほうが楽だと思います。


いまさらな話ですが何かの役にたったら嬉しいどす。
ではでは。