page.title=互換性の維持 @jd:body
マテリアル テーマやカスタムのアクティビティ遷移など、マテリアル デザインの一部の機能は Android5.0(API レベル21)以降のみで利用できます。 ただし、マテリアル デザインをサポートし、以前のバージョンの Android を実行している端末と互換性がある端末でこれらの機能が実行されている場合は、機能を使用できるようにアプリを設計することが可能です。
マテリアル テーマをサポートしている端末ではマテリアル テーマを使用するようにアプリを構成できますが、同時に次のようにして以前のバージョンの Android を実行する端末向けに以前のテーマに戻すことができます。
res/values/styles.xml
で、以前のテーマ(Holo など)から継承するテーマを定義します。res/values-v21/styles.xml
で、マテリアル テーマから継承するテーマを上記と同じ名前で定義します。注: この方法で別のテーマを用意せずマテリアル テーマだけを使う場合、そのアプリは 5.0 よりも前のバージョンの Android では実行できません。
マテリアル デザインのガイドラインに沿って設計したレイアウトでも、Android 5.0(API レベル 21)で導入された新しい XML 属性を一切使用していない場合は、以前のバージョンの Android でも問題なく表示されます。 新しい XML 属性を使用している場合は、別のレイアウトを用意できます。以前のバージョンの Android でアプリが表示される方法をカスタマイズする目的で別のレイアウトを用意することも可能です。
Android 5.0(API レベル 21)向けのレイアウト ファイルを res/layout-v21/
に作成し、以前のバージョンの Android 向けの別のレイアウト ファイルを
res/layout/
に作成します。
たとえば、res/layout/my_activity.xml
は res/layout-v21/my_activity.xml
の代替レイアウトになります。
コードの重複を避けるには、res/values/
でスタイルを定義して res/values-v21/
で新しい API 用にスタイルを修正します。それからスタイル継承を用いて、基本スタイルを res/values/
で定義して、そのスタイルを res/values-v21/
で継承します。
v7 サポート ライブラリ r21 以降には、次のマテリアル デザイン機能が含まれています。
Theme.AppCompat
テーマのいずれかを適用した場合の、システム ウィジェット用のマテリアル デザインのスタイル。
Theme.AppCompat
テーマのカラーパレット テーマ属性。
Theme.AppCompat
テーマでは、次のウィジェット向けにマテリアル デザインのスタイルが提供されています。
Android v7 サポート ライブラリでマテリアル デザインのスタイルを入手し、カラーパレットをカスタマイズするには、次のように Theme.AppCompat
テーマのいずれかを適用します。
<!-- extend one of the Theme.AppCompat themes --> <style name="Theme.MyTheme" parent="Theme.AppCompat.Light"> <!-- customize the color palette --> <item name="colorPrimary">@color/material_blue_500</item> <item name="colorPrimaryDark">@color/material_blue_700</item> <item name="colorAccent">@color/material_green_A200</item> </style>
{@link android.support.v7.widget.RecyclerView} ウィジェットや {@link android.support.v7.widget.CardView} ウィジェットは Android v7 サポート ライブラリを通じて以前のバージョンの Android でも使用できますが、次のような制限があります。
5.0(API レベル 21)より前のバージョンの Android でこれらの機能を使用するには、Android v7 サポート ライブラリを Gradle 依存関係としてプロジェクトに含めます。
dependencies { compile 'com.android.support:appcompat-v7:21.0.+' compile 'com.android.support:cardview-v7:21.0.+' compile 'com.android.support:recyclerview-v7:21.0.+' }
次の機能は、Android 5.0(API レベル 21)以降でのみ使用できます。
以前のバージョンの Android との互換性を維持するには、上記の機能に対する API を起動する前に、システム {@link android.os.Build.VERSION#SDK_INT version} を実行時に確認します。
// Check if we're running on Android 5.0 or higher if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Call some material design APIs here } else { // Implement this feature without material design }
注: アプリがサポートする Android のバージョンを指定するには、マニフェスト ファイルで android:minSdkVersion
属性と android:targetSdkVersion
属性を使用します。
Android 5.0 でマテリアル デザインの機能を使用するには、android:targetSdkVersion
属性を 21
に設定します。
詳細については、<uses-sdk> API ガイドをご覧ください。