概要
Lollipopより前のAndroid OSではVectorDrawable
に対応していないため、<vector>
要素を使ったリソースを使うことができません。
そのため<vector>
要素を使ったリソースをresフォルダにおいても利用することができませんでした。
しかし、Android Gralde Plugin 1.4からはベクトル画像から古いAndroid OS向けに解像度別png画像を生成してくれます。
これはGoogle I/Oでも紹介されていました。
これによりアイコンのような画像などは一つのリソースファイルを置くだけで良くなります。
Android Studio 1.4をフライングした話
http://qiita.com/takahirom/items/3c54cdc35b6dd5116d73
でフライングはしていたのですが、
Beta版が出て、自分でビルドしなくても誰でも使えるようになったようなので試してみました。
Vector画像を追加してビルドしてみる
Android Gradle Plugin 1.4.0-beta1を追加する
まずプロジェクトのルートフォルダに有るbuild.graldeに以下のように書きます。
dependencies {
classpath 'com.android.tools.build:gradle:1.4.0-beta1'
}
画像を追加する
Vector AssetからVector画像の追加を行います。
ここから画像が選べるので、追加を行うと、
drawableフォルダにこのようなVectorデータが入ったリソースファイルができます。
drawable/ic_accessibility_24dp.xml
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,2c1.1,0 2,0.9 2,2s-0.9,2 -2,2 -2,-0.9 -2,-2 0.9,-2 2,-2zm9,7h-6v13h-2v-6h-2v6H9V9H3V7h18v2z"/>
</vector>
画像を使う
普通にImageViewのsrcなどで参照します。
<ImageView
android:src="@drawable/ic_accessibility_24dp"
android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
動かしてみる
Android 4.4で動きました!
vectorリソースのandroid:fillColor
を"#FF0000ff"
のように変えてあげれば画像の色も変更することができます。
buildフォルダを覗く
生成されている画像を見ることができます。
ビルドエラーがでてビルドできない場合の対処法
AOSPのissueに同じようなのが上がっていて、gfxさんのワークアラウンドが載っていたので、それを参考にさせていただきます。(build.gradleに書く)
https://code.google.com/p/android/issues/detail?id=162448