2017年2月23日木曜日

android 4.0.4 のアイコンソースに SVG

アプリを BOOX にインストールしたとき、どうも違和感を感じるのがアイコン。デフォルトでインストールされているアイコンはクッキリメイリハリあるのに、自分でインストールした方はボケて、まるでダメ。
16階調使えるディスプレイをうまくコントロールできてないのか、とも考えて何度も png 画像を調整みたが、あきらめて自作アプリはGoogle Playに登録してしまった。

しかしこれは悔しい。アドビ的な表現だと、illustratorで作ったか、photoshopで作ったかの差があり、おそらくベクター形式の画像をアイコンに使用する方法があるんだと仮説を立てた。

ネットで調べると、android 5(Lollipop API Level 21)以降は SVG 形式対応になっているとの情報をちらほら見かけるが、BOOX の android は 4.0.4 なので、除外になるっぽい。...と、一瞬諦めかけたが、どの情報もイマイチ言い切ったものでなく推測っぽい。

一応、手探りで実験してみた。


やっぱ仮説は当たっていて、期待した結果となった。
手順は簡単、

【手順1】

illustrator とか(それ以外は知りませんけど) SVG データ作成可能なツールで、SVGデータファイルの書き出し。
illustrator で書き出した SVG データには、取り込み時にエラーを発生させる

<defs>
</defs>

この2行をテキストエディタで削除しておく(別にしなくても強制的に取り込めるけど)。



【手順2】

Android Studio で通常の画像取り込み手順同様だが、

[Project]タブ-[アプリ名]-[app]-[main]-[src]-[res]-[drawable] で右クリックし、

[New]-[Vector Asset] で作成した SVGファイルを取り込む。
表示される下記のウィンドウで、「Override」をチェックしておかないと、期待しない縦横比になるので注意(24dpx24dpが初期値のようだ)。




【手順3】

アイコンとして認識させるため、AndroidManifest.xmlのicon設定を上書きする。

android:icon="@drawable/[ファイル名]"

[ファイル名]部分は拡張子は不要。@マークから書いていけば、自動補完機能でラクラク入力できる。



これで、終わり。

ちょうど、アプリに変更入れようと思っていたので、この変更も入れて今度登録してみようっと。

0 件のコメント:

コメントを投稿