10
10

More than 5 years have passed since last update.

Android Gradle Plugin 1.4.0-beta1のVector Imagesを試してみた

Last updated at Posted at 2015-08-30

概要

Lollipopより前のAndroid OSではVectorDrawableに対応していないため、<vector>要素を使ったリソースを使うことができません。
そのため<vector>要素を使ったリソースをresフォルダにおいても利用することができませんでした。

しかし、Android Gralde Plugin 1.4からはベクトル画像から古いAndroid OS向けに解像度別png画像を生成してくれます。
これはGoogle I/Oでも紹介されていました。
image

これによりアイコンのような画像などは一つのリソースファイルを置くだけで良くなります。

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画像の追加を行います。
image

ここから画像が選べるので、追加を行うと、
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で動きました!

image

vectorリソースのandroid:fillColor"#FF0000ff"のように変えてあげれば画像の色も変更することができます。
image

buildフォルダを覗く

生成されている画像を見ることができます。

image

ビルドエラーがでてビルドできない場合の対処法

image

AOSPのissueに同じようなのが上がっていて、gfxさんのワークアラウンドが載っていたので、それを参考にさせていただきます。(build.gradleに書く)
https://code.google.com/p/android/issues/detail?id=162448

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10