要点
- ベクター型ドローアブルとは、XML ファイル内で、点、線、形のセットとして定義されるベクター グラフィックのことです。 関連する色情報が含まれます。
- ベクター型ドローアブルは拡張性があるため、表示品質を損なうことなくサイズを変更できます。 アプリのサイズを小さくできるため、Android アプリでの使用に最適です。 パフォーマンスを向上させます。
- Android Studio でベクター型ドローアブルを作成するには、drawable フォルダを右クリックします。 [新規] >ベクター アセット。また、SVG ファイルを ベクター型ドローアブルとしての Android Studio。
はじめに
VectorDrawable
は、定義されたベクター グラフィックです。
関連するポイント、線、曲線のセットとして XML ファイルに記述し、
色情報。ベクター型ドローアブルを使用する主な利点は、
拡張性に優れています画質を損なわずにスケーリングできるため、
同じファイルをさまざまな画面密度向けにサイズ変更しても、画質は損なわれません。
これにより、APK ファイルが小さくなり、デベロッパーによる保守が少なくなります。また、
複数の XML ファイルではなく複数の XML ファイルを使用して、アニメーションにベクター画像を使用する
各ディスプレイ解像度の画像が表示されます。
このページと以下の動画では、XML でベクター型ドローアブルを作成する方法の概要を説明します。 Android Studio では、SVG ファイルをベクター型ドローアブル形式に変換することもできます。詳しくは、 [多密度のベクター グラフィックを追加する] を使用します。
Android 5.0(API レベル 21)は、ベクター型ドローアブルを公式にサポートした最初のバージョンです。
VectorDrawable
と AnimatedVectorDrawable
、ただし
古いバージョンをサポートするには、Android サポート ライブラリを使用します。
VectorDrawableCompat
と
AnimatedVectorDrawableCompat
クラス。
VectorDrawable クラスについて
VectorDrawable
は静的ドローアブルを定義します。
渡されます。SVG 形式と同様に、各ベクター グラフィックは
path
オブジェクトと group
オブジェクトで構成されます。
各 path
には、オブジェクトのアウトラインのジオメトリと
group
には変換の詳細が含まれます。すべてのパスが描画される
XML ファイルに記述されているのと同じ順序で表示されます。
ベクター アセット studio ツールを使用すると、プロジェクトにベクター グラフィックを簡単に追加できます。 XML ファイルとしてエクスポートできます
XML の例
画像を表示する VectorDrawable
XML ファイルの例を以下に示します。
自動的にシャットダウンします。
<!-- res/drawable/battery_charging.xml --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <group android:name="rotationGroup" android:pivotX="10.0" android:pivotY="10.0" android:rotation="15.0" > <path android:name="vect" android:fillColor="#FF000000" android:pathData="M15.67,4H14V2h-4v2H8.33C7.6,4 7,4.6 7,5.33V9h4.93L13,7v2h4V5.33C17,4.6 16.4,4 15.67,4z" android:fillAlpha=".3"/> <path android:name="draw" android:fillColor="#FF000000" android:pathData="M13,12.5h2L11,20v-5.5H9L11.93,9H7v11.67C7,21.4 7.6,22 8.33,22h7.33c0.74,0 1.34,-0.6 1.34,-1.33V9h-4v3.5z"/> </group> </vector>
この XML により、次の画像がレンダリングされます。
AnimatedVectorDrawable クラスについて
AnimatedVectorDrawable
は、ベクターのプロパティにアニメーションを追加します。
。1 つのアニメーション ベクター グラフィックを 3 つの独立した
リソース ファイルや、ドローアブル全体を定義する単一の XML ファイルとして使用できます。では、
理解を深めるために、複数の XML ファイルと単一
XML ファイル。
複数の XML ファイル
この方法により、次の 3 つの XML ファイルを個別に定義できます。
VectorDrawable
XML ファイル。-
AnimatedVectorDrawable
XML ファイル。 ターゲットのVectorDrawable
、 アニメーション化するパスとグループ、プロパティ、ObjectAnimator
オブジェクトまたはAnimatorSet
オブジェクト。 - アニメーターの XML ファイル。
複数の XML ファイルの例
次の XML ファイルは、ベクター グラフィックのアニメーションを示しています。
- VectorDrawable の XML ファイル:
vd.xml
-
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="64dp" android:width="64dp" android:viewportHeight="600" android:viewportWidth="600" > <group android:name="rotationGroup" android:pivotX="300.0" android:pivotY="300.0" android:rotation="45.0" > <path android:name="vectorPath" android:fillColor="#000000" android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> </group> </vector>
- AnimatedVectorDrawable の XML ファイル:
avd.xml
-
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/vd" > <target android:name="rotationGroup" android:animation="@anim/rotation" /> <target android:name="vectorPath" android:animation="@anim/path_morph" /> </animated-vector>
- AnimatedVectorDrawable の XML で使用される Animator XML ファイル
ファイル:
rotation.xml
とpath_morph.xml
-
<objectAnimator android:duration="6000" android:propertyName="rotation" android:valueFrom="0" android:valueTo="360" />
<set xmlns:android="http://schemas.android.com/apk/res/android"> <objectAnimator android:duration="3000" android:propertyName="pathData" android:valueFrom="M300,70 l 0,-70 70,70 0,0 -70,70z" android:valueTo="M300,70 l 0,-70 70,0 0,140 -70,0 z" android:valueType="pathType"/> </set>
単一の XML ファイル
この方法を使用すると、関連する XML ファイルを 1 つの
XML バンドル形式を使用した XML ファイル。アプリのビルド時に、
aapt
タグは個別のリソースを作成し、
アニメーション化します。この方法を使用するには、Build Tools バージョン 24 以降が必要です。また、
下位互換性があります。
単一の XML ファイルの例
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"> <aapt:attr name="android:drawable"> <vector android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:name="root" android:strokeWidth="2" android:strokeLineCap="square" android:strokeColor="?android:colorControlNormal" android:pathData="M4.8,13.4 L9,17.6 M10.4,16.2 L19.6,7" /> </vector> </aapt:attr> <target android:name="root"> <aapt:attr name="android:animation"> <objectAnimator android:propertyName="pathData" android:valueFrom="M4.8,13.4 L9,17.6 M10.4,16.2 L19.6,7" android:valueTo="M6.4,6.4 L17.6,17.6 M6.4,17.6 L17.6,6.4" android:duration="300" android:interpolator="@android:interpolator/fast_out_slow_in" android:valueType="pathType" /> </aapt:attr> </target> </animated-vector>
ベクター型ドローアブルの下位互換性ソリューション
以前のバージョンのプラットフォームを搭載したデバイスでベクター型ドローアブルとアニメーション化ベクター型ドローアブルをサポートする
使用するか、fillColor
、fillType
、および
Android 7.0(API レベル 24)以前の strokeColor
機能、
VectorDrawableCompat
および AnimatedVectorDrawableCompat
次の 2 つのサポート ライブラリから入手できます。
support-vector-drawable
と animated-vector-drawable
、
できます。
Android Studio 1.4 で導入されたベクトルの限定的な互換性サポート
ビルド時に PNG ファイルを生成することで、ドローアブルを使用できます。ただし、ベクター型ドローアブルでは
アニメーション化ベクター型ドローアブルのサポート
ライブラリは柔軟性と
幅広い互換性があります。サポート ライブラリであるため、
Android プラットフォームのバージョンが Android 2.1(API レベル 7 以降)に。ファイアウォール ルールを
ベクトル サポート ライブラリを使用するには、vectorDrawables
を追加します。
要素をアプリ モジュールの build.gradle
ファイルに追加します。
次のコード スニペットを使用して vectorDrawables
を構成します。
要素:
Groovy
// For Gradle Plugin 2.0+ android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
Kotlin
// For Gradle Plugin 2.0+ android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
Groovy
// For Gradle Plugin 1.5 or below android { defaultConfig { // Stops the Gradle plugin’s automatic rasterization of vectors generatedDensities = [] } // Flag notifies aapt to keep the attribute IDs around aaptOptions { additionalParameters "--no-version-vectors" } }
Kotlin
// For Gradle Plugin 1.5 or below android { defaultConfig { // Stops the Gradle plugin’s automatic rasterization of vectors generatedDensities() } // Flag notifies aapt to keep the attribute IDs around aaptOptions { additionalParameters("--no-version-vectors") } }
VectorDrawableCompat
を使用できます。
および
AnimatedVectorDrawableCompat
(すべて)
Android 4.0(API レベル 14)以降を搭載しているデバイスで利用できます。Android の
ドローアブルを読み込みます。XML など、ドローアブル ID を受け入れるすべての場所とは限りません。
ベクター型ドローアブルの読み込みをサポートします。「
android.support.v7.appcompat
パッケージに番号を追加しました
ベクター型ドローアブルを簡単に使用できます。まず
android.support.v7.appcompat
個のパッケージ
ImageView
、または
ImageButton
と
FloatingActionButton
、できること
新しい app:srcCompat
属性を使用してベクター型ドローアブルを参照する
および android:src
で使用できるその他のドローアブル:
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_add" />
実行時にドローアブルを変更するには、
setImageResource()
メソッドを使用します。AppCompat
の使用
app:srcCompat
は、最も確実な統合方法です。
ベクター型ドローアブルをアプリに追加できます。
Support Library 25.4.0 以降では、次の機能がサポートされています。
- パスモーフィング(PathType エバリュエータ) モーフィングに使用されます。 変換する場合です
- パス補間: 柔軟なパス (パスとして表される)を使用して、システム定義の LinearInterpolator などの interpolator を使用できるようになります。
サポート ライブラリ 26.0.0-beta1 以降では、次の機能がサポートされています。
- パスに沿って移動: ジオメトリ オブジェクトは移動できます。 アニメーションの一環として任意のパスに沿って表示できます。
サポート ライブラリを使用した複数の XML ファイルの例
次の XML ファイルは、複数の XML ファイルを使用する場合のアプローチを示しています。 ベクターグラフィックをアニメーション化します。
- VectorDrawable の XML ファイル:
vd.xml
-
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="64dp" android:width="64dp" android:viewportHeight="600" android:viewportWidth="600" > <group android:name="rotationGroup" android:pivotX="300.0" android:pivotY="300.0" android:rotation="45.0" > <path android:name="vectorPath" android:fillColor="#000000" android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> </group> </vector>
- AnimatedVectorDrawable の XML ファイル:
avd.xml
-
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/vd" > <target android:name="rotationGroup" android:animation="@anim/rotation" /> </animated-vector>
- AnimatedVectorDrawable の XML で使用されるアニメーター XML ファイル
ファイル:
rotation.xml
-
<objectAnimator android:duration="6000" android:propertyName="rotation" android:valueFrom="0" android:valueTo="360" />
単一の XML ファイル
次の XML ファイルは、単一の XML ファイルを使用する方法を示しています。
ベクターグラフィックをアニメーション化します。アプリのビルド時に、
aapt
タグは個別のリソースを作成し、
アニメーション化します。この方法を使用するには、Build Tools バージョン 24 以降が必要です。また、
下位互換性があります。
サポート ライブラリを使用した単一の XML ファイルの例
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"> <aapt:attr name="android:drawable"> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="64dp" android:height="64dp" android:viewportWidth="600" android:viewportHeight="600"> <group android:name="rotationGroup" android:pivotX="300" android:pivotY="300" android:rotation="45.0" > <path android:name="vectorPath" android:fillColor="#000000" android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> </group> </vector> </aapt:attr> <target android:name="rotationGroup"> <aapt:attr name="android:animation"> <objectAnimator android:propertyName="rotation" android:valueFrom="0" android:valueTo="360" android:duration="6000" android:interpolator="@android:interpolator/fast_out_slow_in" /> </aapt:attr> </target> </animated-vector>