サポート ライブラリの機能ガイド

注: Android 9.0(API レベル 28)のリリース以降、Jetpack の一部として AndroidX という新しいバージョンのサポート ライブラリが導入されました。AndroidX ライブラリには既存のサポート ライブラリのほか、最新の Jetpack コンポーネントも含まれています。

サポート ライブラリは引き続きご利用いただけます。過去のアーティファクト(バージョン 27 以前で android.support.* としてパッケージ化されたもの)は、Google Maven で引き続き利用できます。ただし、新しいライブラリ開発はすべて AndroidX ライブラリ内で行うことになります。

すべての新しいプロジェクトに AndroidX ライブラリを使用することをおすすめします。また、既存のプロジェクトを AndroidX に移行することもご検討ください。

サポート ライブラリには、基本的なアプリ コンポーネントからユーザー インターフェース ウィジェット、メディア処理、TV アプリ コンポーネントまで、アプリを構築するための幅広いクラスが用意されています。クラスの多くは下位互換性のある実装ですが、一部はそれ自体が新機能です。

このドキュメントでは、サポート ライブラリで利用できる機能の重要なカテゴリの概要と、アプリを作成する際に知っておくべき特定のクラスについて説明します。

サポート ライブラリ コードをアプリ開発プロジェクトに追加する方法については、サポート ライブラリのセットアップをご覧ください。特定のサポート ライブラリ パッケージをプロジェクトに含める方法については、 サポート ライブラリ パッケージをご覧ください。

アプリ コンポーネント

これらのサポート ライブラリ クラスは、重要なコア プラットフォーム機能の下位互換性のある実装を提供します。通常、これらの実装は、プラットフォームのより新しいリリースで追加された新しいメソッドと機能を処理するために、クラスの以前のバージョンを拡張します。これらのクラスの一部は、フレームワーク API の完全で静的な実装です。

  • アクティビティ
    • ActivityCompat - 実行時の権限やアニメーションの遷移など、アクティビティの最近の主要機能に対する下位互換性のある実装が含まれます。
    • FragmentActivity - アクティビティが Fragment API と Loader API のサポート ライブラリ バージョンを使用するための下位互換性のある実装を提供します。
    • AppCompatActivity - マテリアル カラーテーマ、ウィジェットの色合い調整、アプリバーのサポートを以前のデバイスに提供します。このクラスを使用するには、一貫した視覚的表示のために Theme.AppCompat テーマを使用する必要があります。
  • Fragment - フレームワーク Fragment クラスのスタンドアロン実装を提供します。このクラスは FragmentActivity とともに使用する必要があります。
  • ContextCompat - 権限サポート、ファイル アクセス、色情報など、Context クラスの最新リリースで導入された機能をサポートします。
  • IntentCompat - 特定のアクティビティを選択して開始するメソッドなど、Intent クラスの最新リリースで導入された機能をサポートします。
  • Loader - フレームワーク Loader クラスの静的実装を提供します。これは AsyncTaskLoader および CursorLoader サポートクラスの基本クラスです。
  • Preference - このクラスとそのサブクラスは、下位互換性のあるアプリ設定ユーザー インターフェースの実装を提供します。
  • ContentResolverCompat - ContentResolver クラスの最新リリースで導入された機能、特に進行中のクエリをキャンセルできる query() メソッドをサポートします。

ユーザー インターフェース

これらのサポート ライブラリ クラスは、主要なユーザー インターフェース ウィジェットと動作の実装を提供し、古いデバイスでより最新のアプリ インターフェースを作成するのに役立ちます。これらのウィジェットの一部は、サポート ライブラリからのみ利用可能です。

汎用レイアウト コンテナ

これらのサポートクラスは、さまざまな設計のユースケースに適応可能なユーザー インターフェース コンテナを提供します。

  • RecyclerView - メモリを大量に消費しない方法を使用して、長いリストを表示するためのレイアウトを作成します。 このクラスを使用すると、より大きなデータセットに限られたウィンドウ ビューを作成できるため、リストを表示する際に大量のメモリを消費せずに済みます。 RecyclerView の使用について詳しくは、リサイクラー ビューのガイドをご覧ください。
  • ViewPager - データのページを左右にめくることができるレイアウトを提供します。
  • GridLayout - 長方形のグリッドで子を持つレイアウトを提供し、連続したセルの任意の範囲と柔軟なスペース配分をサポートします。このクラスは、Android 4.0(API レベル 14)で導入された GridLayout クラスの下位互換性のあるバージョンを提供します。
  • PercentFrameLayoutPercentRelativeLayout - 子ビューとコンテンツについて、パーセンテージ ベースのサイズとマージンをサポートするレイアウトを提供します。

注: ViewPagerRecyclerViewPercentFrameLayoutPercentRelativeLayout のクラスは、サポート ライブラリからのみ入手できます。

専用レイアウト コンテナ

これらのサポートクラスは、画面の端から pull できるドロワービュー、スライドパネル、リスト内のネストリストなど、特定のレイアウト パターンの互換性のある実装を提供します。

  • DrawerLayout - インタラクティブな ドロワービューをビュー ウィンドウの端から引き出せるレイアウトを作成します。
  • SlidingPaneLayout - アプリのユーザー インターフェースの最上位で使用する水平マルチペイン レイアウトを提供します。これにより、さまざまな画面サイズにスムーズに適応できるレイアウト(大きな画面では拡大し、小さな画面に合わせて閉じる)を作成できるようになります。
  • NestedScrollView - 他のスクロール ビューのネストをサポートするスクロール レイアウト。追加の子リストを含むアイテムを持つリストを作成できます。このようなネストされたリストには、親リストとは別に、水平方向または垂直方向にスクロールするアイテムを含めることができます。
  • SwipeRefreshLayout - 指でスワイプする操作でリストやその他のレイアウトのデータを更新できるレイアウトを提供します。

ビュー、ダイアログ、ウィジェット

サポート ライブラリには、コンテンツを表示し、ユーザー操作要素をレイアウト内に提供するためのクラスが多数用意されています。

  • CardView - マテリアル デザイン スタイルのディスプレイ カードを作成するためのサポート ライブラリのカスタムクラスです。このクラスは、角を丸くしドロップ シャドウを備えた FrameLayout に基づいています。
  • AppCompatDialogFragment - DialogFragment を拡張して AppCompatDialog を使用することで、一貫したスタイル設定されたダイアログを提供します。
  • NotificationCompat - 下位互換性のある方法で新しい通知スタイルをサポートします。
  • SearchView - ユーザーが検索クエリを入力して、検索プロバイダにリクエストを送信するためのクラスを提供します。主にアプリバーでの使用を目的としています。

マテリアル デザイン

サポート ライブラリには、マテリアル デザイン ユーザー インターフェースの推奨事項を実装するためのクラスが多数用意されています。

  • CoordinatorLayout - マテリアル デザインのコンポーネントと動作を組み込んだレイアウト用の最上位コンテナを提供します。このクラスは、1 つ以上の子ビューと特定のやり取りを行うためのコンテナとしても使用できます。
  • AppBarLayout - マテリアル デザインの アプリバーのコンセプトのスクロール機能の多くを実装しています。
  • FloatingActionButton - アクションを促進する特殊なタイプを表示するフローティング ボタンを作成します。このマテリアル デザインのユーザー インターフェース要素は、アプリのユーザー インターフェースの上に浮かぶ丸いアイコンとして表示されます。詳細については、フローティング アクション ボタンを追加するをご覧ください。
  • DrawerLayout - ナビゲーション ドロワー(アプリのメイン ナビゲーション メニューを表示する UI パネル)を作成します。ユーザーが画面の左端から指をスワイプするか、アプリバーのドロワー アイコンをタップすると表示されます。詳細については、ナビゲーション ドロワーを作成するをご覧ください。
  • TabLayout - タブ付きページを表示するためのレイアウトを指定します。このウィジェットは、ViewPager クラスで使用するために設計されています。
  • Snackbar - スナックバー ポップアップを使用して、操作に関する軽量なフィードバックを表示するためのウィジェットを提供します。

グラフィック

android.support.graphics.drawable パッケージは、ベクター型ドローアブルのサポートを提供します。ベクター型ドローアブルを使用すると、複数の PNG アセットを XML で定義された単一のベクター グラフィックに置き換えることができます。

VectorDrawableCompat は、API レベル 9 以降でベクター型ドローアブルをサポートします。AnimatedVectorDrawableCompat は、API レベル 11 以降でアニメーション化ベクター型ドローアブルをサポートします。

ユーザー補助

android.support.v4.view.accessibility パッケージは、API レベル 14 以降で導入されたユーザー補助機能を実装するための互換性クラスを提供します。これにより、ユーザー補助サービスは、画面に表示されるアイテムに対するユーザー操作を監視および識別できます。

  • ExploreByTouchHelper - ビューに似た論理アイテムのコレクションを表すカスタム View で、ユーザー補助機能を提供します。

メディアの再生

Android サポート ライブラリは、Android 4.1(API レベル 16)より前のバージョンのプラットフォームを搭載したデバイスに、メディア ルーター機能のバックポートを提供します。次のクラスを使用すると、接続された Android デバイス間でのメディア再生を制御できます。

  • MediaRouter - 現在のデバイスから外部のスピーカーや配信先デバイスへのメディア チャンネルとメディア ストリームのルーティングをアプリで制御できるようにします。
  • MediaControllerCompat - 進行中のメディア セッションの操作をアプリに許可します。アプリは、このメカニズムによってメディア コントロール ボタンを提供し、他の再生コマンドをセッションに送信できます。
  • MediaSessionCompat - メディア再生用のリモコン インターフェースを提供し、他のアプリや別のデバイスのメディア コントローラ、音量キー、メディアボタン、トランスポート コントロールを操作できるようにします。

TV アプリ

Android SDK には、大画面やそれに関連するコントローラなどのフォーム ファクタをサポートするためのライブラリが用意されています。アプリは、適切なサポート ライブラリを利用して幅広いプラットフォーム バージョンで機能を提供し、外部の画面、スピーカー、その他の配信先デバイスにコンテンツを提供できます。

Wear アプリ

Android SDK には、スマートウォッチをサポートするためのライブラリが用意されています。これらのライブラリは、ユーザーがスマートウォッチを身に着けているときにいつでも利用できる機能を提供します。

ユーティリティ

Android サポート ライブラリには、フレームワークには組み込まれていないさまざまな機能が用意されています。これらのライブラリは、アプリが使用できるさまざまなユーティリティを提供します。