page.title=ドローアブルの使用 @jd:body

このレッスンでの学習内容

  1. ドローアブル リソースに色を付ける
  2. 画像から代表色を抽出する
  3. ベクター型ドローアブルを作成する

関連ドキュメント

アプリにマテリアル デザインを実装する際は、Drawable (ドローアブル)の次の機能を活用できます。

このレッスンでは、アプリでのこれらの機能を使用する方法について説明します。

ドローアブル リソースに色を付ける

Android 5.0(API レベル 21)以降では、アルファ マスクとして定義されたビットマップや 9-patch に色を付けることができます。 着色には、カラーリソースまたはカラーリソースに変換されるテーマ属性を使用できます(?android:attr/colorPrimary など)。 通常は、これらのアセットを一度作成するだけで、テーマに合うように自動的に着色されます。

{@code setTint()} メソッドを使用して {@link android.graphics.drawable.BitmapDrawable} オブジェクトか {@link android.graphics.drawable.NinePatchDrawable} オブジェクトに色を適用できます。また、android:tint 属性や android:tintMode 属性を使ってレイアウトで色やモードを設定できます。

画像から代表色を抽出する

Android サポート ライブラリ r21 以降には、画像から代表色を抽出できる {@link android.support.v7.graphics.Palette} クラスが含まれています。

これらの色を抽出するには、画像を読み込むバックグラウンド スレッドで {@link android.graphics.Bitmap} オブジェクトを {@link android.support.v7.graphics.Palette#generate Palette.generate()} の静的メソッドに渡します。 スレッドを使用できない場合は、代わりに {@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} メソッドを呼び出してリスナーを提供します。

Palette クラスで、Palette.getVibrantColor などの getter メソッドを使って画像から代表色を取得できます。

プロジェクトで {@link android.support.v7.graphics.Palette} クラスを使用するには、アプリのモジュールに次の Gradle 依存関係を追加します。

dependencies {
    ...
    compile 'com.android.support:palette-v7:21.0.0'
}

詳細については、API リファレンスの {@link android.support.v7.graphics.Palette} クラスをご覧ください。

ベクター型ドローアブルを作成する

ビデオ

Android ベクター グラフィック

Android 5.0(API レベル 21)以降では、ベクター型ドローアブルを定義できます。このドローアブルは定義を失わずに拡張できます。 ビットマップ画像では画面密度ごとにアセット ファイルが必要ですが、ベクター画像で必要なアセット ファイルは 1 つのみです。 ベクター画像を作成するには、<vector> XML 要素で図形の詳細を定義します。

次の例では、ハート型のベクター画像を定義しています。

<!-- res/drawable/heart.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    <!-- intrinsic size of the drawable -->
    android:height="256dp"
    android:width="256dp"
    <!-- size of the virtual canvas -->
    android:viewportWidth="32"
    android:viewportHeight="32">

  <!-- draw a path -->
  <path android:fillColor="#8fff"
      android:pathData="M20.5,9.5
                        c-1.955,0,-3.83,1.268,-4.5,3
                        c-0.67,-1.732,-2.547,-3,-4.5,-3
                        C8.957,9.5,7,11.432,7,14
                        c0,3.53,3.793,6.257,9,11.5
                        c5.207,-5.242,9,-7.97,9,-11.5
                        C25,11.432,23.043,9.5,20.5,9.5z" />
</vector>

Android ではベクター画像は {@link android.graphics.drawable.VectorDrawable} オブジェクトとして表示されます。pathData 構文の詳細については、SVG パス リファレンスをご覧ください。ベクター型ドローアブルのアニメーションの詳細については、 ベクター ドローアブルのアニメーションをご覧ください。