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

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

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

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

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

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

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

アプリのコンポーネント

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

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

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

以下のサポート ライブラリ クラスは、主要なユーザー インターフェース ウィジェットと動作の実装を実現し、旧型のデバイスで最新のアプリ インターフェースを作成できるようにサポートします。これらのウィジェットのいくつかは、サポート ライブラリを通じてのみ利用できます。

汎用レイアウト コンテナ

以下のサポートクラスには、さまざまな設計のユースケースに適応できるユーザー インターフェース コンテナが用意されています。

  • RecyclerView - メモリが過剰に消費されない方法で長いリストを表示できるレイアウトを作成します。このクラスを使用すると、大規模なデータセットに限定的なウィンドウ ビューを作成できるため、リストを表示するときに大量のメモリが消費されることを回避できます。 RecyclerView の使用方法について詳しくは、リサイクラー ビューのガイドをご覧ください。
  • ViewPager - ユーザーがデータのページを左右にめくることができるレイアウトを設定します。
  • GridLayout - 長方形のグリッドに子要素を配置したレイアウト(連続セルの任意の範囲と柔軟なスペース配置に対応)を設定します。このクラスには、Android 4.0(API レベル 14)で導入された、GridLayout クラスの下位互換バージョンが用意されています。
  • PercentFrameLayoutPercentRelativeLayout - 子ビューとコンテンツの、パーセンテージ ベースのサイズおよび余白に対応するレイアウトを設定します。

注: ViewPagerRecyclerViewPercentFrameLayoutPercentRelativeLayout の各クラスはサポート ライブラリからのみ使用できます。

専用レイアウト コンテナ

以下のサポートクラスでは、画面の端から引き出せるドロワービュー、スライドパネル、リスト内のネストリストなど、特定のレイアウト パターンに対応した実装が可能です。

  • 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 - ビューのような論理項目のコレクションを表すカスタムビューで、ユーザー補助サポートを提供します。

メディア再生

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

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

TV アプリ

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

Wear アプリ

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

ユーティリティ

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