Support Library の機能ガイド

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

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

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

Support Library は、基本的なアプリ コンポーネントからユーザー インターフェース ウィジェット、メディア処理、TV アプリ コンポーネントまで、アプリ構築に役立つ幅広いクラスを提供します。多くのクラスは下位互換性を実現しますが、一部はそれ自体が新しい機能です。

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

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

アプリのコンポーネント

これらの Support Library クラスでは、重要なコア プラットフォーム機能の下位互換性を確保した実装が可能です。通常このような実装では、プラットフォームの新しいリリースで追加された新しいメソッドや機能を処理できるように以前のバージョンのクラスが拡張され、一部のクラスにはフレームワーク 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 の使用方法について詳しくは、RecyclerView のガイドをご覧ください。
  • ViewPager - データのページを左右にめくれるレイアウトを提供します。
  • GridLayout - 長方形のグリッドに子要素を含むレイアウト(連続セルの任意の範囲と柔軟なスペース配置に対応する)を提供します。このクラスは、Android 4.0(API レベル 14)で導入された、GridLayout クラスの下位互換バージョンを提供します。
  • PercentFrameLayoutPercentRelativeLayout - 子ビューやコンテンツの割合ベースの寸法と余白に対応するレイアウトを提供します。

注: ViewPagerRecyclerViewPercentFrameLayoutPercentRelativeLayout クラスは、Support Library でのみ利用可能です。

専用レイアウト コンテナ

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

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

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

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

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

マテリアル デザイン

サポート ライブラリには、マテリアル デザインのユーザー インターフェースに関する推奨事項を実装するためのクラスが多数用意されています。これらのクラスの多くは android.support.design パッケージで提供されます。

  • 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 Support Library は、Android 4.1(API レベル 16)より前のバージョンのプラットフォームを実行しているデバイスに、メディア ルーター機能のバックポートを提供します。これらのクラスは、接続されている Android デバイス間でのメディア再生の制御を可能にします。

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

TV アプリ

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

Wear アプリ

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

ユーティリティ

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