ダイアログのコンテンツの色はアラートダイアログ テーマの
colorPrimary
をベースにしているため、アプリになじむようになっています。
<!-- Your app theme set on your Activity -->
<style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar" >
<item name = "colorPrimary" > @color/primary </item>
<item name = "colorPrimaryDark" > @color/primaryDark </item>
<item name = "alertDialogTheme" > @style/AppTheme.Dialog </item>
</style>
<!-- Theme for the dialog itself -->
<style name = "AppTheme.Dialog" parent = "Theme.AppCompat.Light.Dialog.Alert" >
<item name = "colorPrimary" > @color/primary </item>
<item name = "colorPrimaryDark" > @color/primaryDark </item>
</style>
RecyclerView
RecyclerView はリスト、グリッド、大きなデータセットを表示できる非常に優れた機能や柔軟性も備えています。
ListView
や
GridView
を超える利点として、アイテムが追加・削除・位置補正される際のアニメーションに対するビルトイン サポートが挙げられます。
今回のリリースでは、
アニメーション システムが大きく改善されています 。最新の
ItemAnimator の
canReuseUpdatedViewHolder() メソッドを使用することで、アイテム コンテンツのアニメーション サポートを有効にして既存の
ViewHolder を再使用できます。新たな
ItemHolderInfo や関連する API により、ItemAnimator はレイアウトのライフサイクル中の適切なタイミングで必要なデータを柔軟に収集できるようになりました。この情報は animate のコールバックに渡されます。
ただし、この新規 API には
旧リリースとの互換性はありません 。
ItemAnimator
を実装済みの場合、上記の代わりに
SimpleItemAnimator を拡張できるので、新規 API を含んだ旧リリース API が提供されます。
ItemAnimator
から完全に削除されたメソッドがあることにお気づきと思います。たとえば
recyclerView.getItemAnimator().setSupportsChangeAnimations(false)
をコールしても、このコードはコンパイルされません。以下のコードと置き換えることができます。
ItemAnimator animator = recyclerView . getItemAnimator ();
if ( animator instanceof SimpleItemAnimator ) {
(( SimpleItemAnimator ) animator ). setSupportsChangeAnimations ( false );
}
AppCompat
AppCompat のサポート ライブラリ のあるコンポーネントが、API のすべてのレベルにおいて一貫性のあるウィジェットを提供してきました。ウィジェットに色を付けて、使用しているブランディングと強調色を合わせる機能などです。
今回のリリースでは、レイアウトでプラットフォーム バージョンを使用する際に
SeekBar (サムネイルを色付けする)、
ImageButton 、
ImageView (
backgroundTint
をサポート)が自動的に適用される「色付け認識」(tint aware)バージョンが追加されています。
SwitchCompat もアップデートされて、Android 6.0 Marshmallow のスタイルと合わせられるようになっています。
デザイン
デザインのサポート ライブラリ には最新の
Google デザイン仕様 の実装を支援する多くのコンポーネントが含まれています。
TextInputLayout が拡張され、既存のフローティング ヒントテキストやエラー インジケーターなどの機能に加え、新たに
文字カウント が搭載されました。
AppBarLayout は、スクロールに対する子ビューの反応(例、画面のスクロール)に影響を与える多くの
スクロール フラグ をサポートしています。今回のリリースでは新たに
SCROLL_FLAG_SNAP が実装され、スクロールが終わってもビューが部分的に表示されたままにはならず、直近の「端」までスクロールが続行され、画面上には完全なビューが表示されるか、まったく表示されなくなります。また、AppBarLayout を使うと、スクロールが可能なビュー内のみではなく、AppBarLayout 内でもスクロールを開始できます。
DragCallback を追加するとこの動作をコントロールできます。
NavigationView は、
ナビゲーション ドロワー のビルドに便利です。XML ファイルでメニューアイテムを作成することもできます。
app:actionLayout
から、または
MenuItemCompat.setActionView() を使用して、アイテムのカスタマイズ ビューを設定できるので、機能をさらに拡張できるようになりました。
Percent
Percent のサポート ライブラリでは
寸法とマージンに基づくパーセンテージ が提供されており、今回のリリースで新たに
app:aspectRatio で
アスペクト比のカスタマイズ設定
ができるようになりました。aspectRatio は幅または高さを 1 つだけ設定するので、
PercentFrameLayout や
PercentRelativeLayout がその他の寸法を自動的に調整し、レイアウトでは設定されたアスペクト比が使用されます。
カスタム タブ
カスタム タブのサポート ライブラリ を使えば、(プリフェッチによって)ロード時間を短縮したり、カスタマイズされたルックとアクションを維持しながら既存の Cookie を利用したりするなど、互換性のあるブラウザの機能をアプリでフル活用できます。
今回のリリースでは、新しい
enableUrlBarHiding() メソッドを使用してページを下にスクロールすると URL バーを非表示にするなどのカスタマイズが多少追加されています。また、
setActionButton() が含まれる
CustomTabsSession から、すでに起動されているカスタム タブのアクション ボタンをアップデートすることもできます。これで状態の変更がわかりやすくなります。
CustomTabsCallback#onNavigationEvent() を経由するナビゲーション イベントも拡張され、新たに
TAB_SHOWN イベントと
TAB_HIDDEN イベントが含まれるようになりました。これにより、デベロッパーのウェブ コンテンツに対してユーザーがどのように反応しているかという情報をアプリで把握できます。
Leanback
Leanback のライブラリを使用すれば、テレビ デバイスのユーザー インターフェースを簡単にビルドできます。今回のリリースでは
GuidedStepFragment バージョンをサポートする
GuidedStepSupportFragment が追加され、またアニメーションと遷移も改善され、既存コンテンツのトップに GuidedStepFragment を置くことができるようになりました。
SearchFragment ではさまざまなタイプの検索の完了に注釈を付けることが、
VerticalGridFragment ではスライド遷移を調整できるようになりました。
Palette
画像から色を抽出するために使用される
Palette に新しい
setRegion() メソッドが追加され、ビットマップの特定のエリアからも抽出できるようになりました。
SDK は今すぐご利用頂けます
今すぐ Android サポート ライブラリを使ってみましょう。Android SDK Manager から Android サポート リポジトリをアップデートして、すぐに開発を始めましょう。
今回のリリースにおける各 API の変更の詳細は
full API diff をご覧ください。
Android サポート ライブラリや利用可能な API の詳細については、Android デベロッパー サイトの
サポート ライブラリ セクション をご覧ください。
Posted by
Eiji Kitamura - Developer Relations Team
[この記事は Ian Lake、デベロッパー アドボケートによる Android Developers Blog の記事 "Android Support Library 23.1 " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]
Android サポート ライブラリ はさまざまなレベルの API で利用可能なライブラリを集めたものであり、ビルド前のコンポーネント、新機能、互換性を有する shim などを提供して、アプリ独自の部分に集中して作業ができるようになります。
Android サポート ライブラリ (23.1) では、V4 サポート、メディア ルーター、RecyclerView、AppCompat、デザイン、Percent、カスタム タブ、Leanback、Palette のライブラリが改善されています。内容は以下をご覧ください。
V4 サポート
V4 サポート ライブラリは、互換性のある shim や旧バージョンへの移植用機能により、さまざまなレベルの APIを簡単にサポートできるようにすることを目的としています。
NestedScrollView は ScrollView
の一種であり、ネストされたスクロールをAPI 4 までさかのぼって対応します。OnScrollChangeListener を設定すると、スクロールの X または Y のポジションが変わったときにコールバックを受け取ることができるようになりました。
MediaSessionCompat を中心に、多彩な機能を備えたさまざまなメディア再生アプリが用意されています。ハードウェア や Bluetooth から再生コントロールを操作する ためのメディア ボタンのレシーバーデバイスは、新しく MediaButtonReceiver クラスとして正式に設定されました。このクラスによって、API 21 以上で必要な Callback メソッドを再使用し、受信した再生コントロールを MediaSessionCompat
を管理するサービスに転送できるようになり、すべての API レベルのサポートおよびすべてのメディア コントロール イベントを一元管理できるようになりました。MediaSessionCompat
にはシンプルなコンストラクタも利用でき、MediaSessionCompat
で使用するメディア ボタンのレシーバーデバイスを Manifest ファイル内で自動的に検出します。
メディア ルーター
メディア ルーターの サポート ライブラリは、Google Cast 対応のビデオやオーディオ デバイスなどの遠隔装置にメディア再生を接続、送信するための重要なコンポーネントです。また、MediaRouteProvider から、アプリケーションとメディア再生デバイスのリモート接続とその管理もできます。
今回のリリースでは、 MediaRouteChooserDialog (適正な遠隔デバイスの選択を制御するダイアログ)とMediaRouteControllerDialog (進行中のリモート再生を制御するダイアログ)のどちらもデザインが刷新され、新たな機能が搭載されています。デバイス選択ダイアログでは使用頻度に応じてデバイスを並べ替えたり、各種デバイスを見分けやすくしたりするデバイスタイプのアイコンを使用し、再生ダイアログではアルバム アートなど、再生中のメディアに関する情報が表示されます。
ダイアログのコンテンツの色はアラートダイアログ テーマの colorPrimary
をベースにしているため、アプリになじむようになっています。
<!-- Your app theme set on your Activity -->
<style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar" >
<item name = "colorPrimary" > @color/primary </item>
<item name = "colorPrimaryDark" > @color/primaryDark </item>
<item name = "alertDialogTheme" > @style/AppTheme.Dialog </item>
</style>
<!-- Theme for the dialog itself -->
<style name = "AppTheme.Dialog" parent = "Theme.AppCompat.Light.Dialog.Alert" >
<item name = "colorPrimary" > @color/primary </item>
<item name = "colorPrimaryDark" > @color/primaryDark </item>
</style>
RecyclerView
RecyclerView はリスト、グリッド、大きなデータセットを表示できる非常に優れた機能や柔軟性も備えています。ListView
や GridView
を超える利点として、アイテムが追加・削除・位置補正される際のアニメーションに対するビルトイン サポートが挙げられます。
今回のリリースでは、アニメーション システムが大きく改善されています 。最新の ItemAnimator の canReuseUpdatedViewHolder() メソッドを使用することで、アイテム コンテンツのアニメーション サポートを有効にして既存の ViewHolder を再使用できます。新たな ItemHolderInfo や関連する API により、ItemAnimator はレイアウトのライフサイクル中の適切なタイミングで必要なデータを柔軟に収集できるようになりました。この情報は animate のコールバックに渡されます。
ただし、この新規 API には 旧リリースとの互換性はありません 。ItemAnimator
を実装済みの場合、上記の代わりに SimpleItemAnimator を拡張できるので、新規 API を含んだ旧リリース API が提供されます。ItemAnimator
から完全に削除されたメソッドがあることにお気づきと思います。たとえば recyclerView.getItemAnimator().setSupportsChangeAnimations(false)
をコールしても、このコードはコンパイルされません。以下のコードと置き換えることができます。
ItemAnimator animator = recyclerView . getItemAnimator ();
if ( animator instanceof SimpleItemAnimator ) {
(( SimpleItemAnimator ) animator ). setSupportsChangeAnimations ( false );
}
AppCompat
AppCompat のサポート ライブラリ のあるコンポーネントが、API のすべてのレベルにおいて一貫性のあるウィジェットを提供してきました。ウィジェットに色を付けて、使用しているブランディングと強調色を合わせる機能などです。
今回のリリースでは、レイアウトでプラットフォーム バージョンを使用する際に SeekBar (サムネイルを色付けする)、ImageButton 、ImageView (backgroundTint
をサポート)が自動的に適用される「色付け認識」(tint aware)バージョンが追加されています。SwitchCompat もアップデートされて、Android 6.0 Marshmallow のスタイルと合わせられるようになっています。
デザイン
デザインのサポート ライブラリ には最新の Google デザイン仕様 の実装を支援する多くのコンポーネントが含まれています。
TextInputLayout が拡張され、既存のフローティング ヒントテキストやエラー インジケーターなどの機能に加え、新たに文字カウント が搭載されました。
AppBarLayout は、スクロールに対する子ビューの反応(例、画面のスクロール)に影響を与える多くのスクロール フラグ をサポートしています。今回のリリースでは新たにSCROLL_FLAG_SNAP が実装され、スクロールが終わってもビューが部分的に表示されたままにはならず、直近の「端」までスクロールが続行され、画面上には完全なビューが表示されるか、まったく表示されなくなります。また、AppBarLayout を使うと、スクロールが可能なビュー内のみではなく、AppBarLayout 内でもスクロールを開始できます。DragCallback を追加するとこの動作をコントロールできます。
NavigationView は、ナビゲーション ドロワー のビルドに便利です。XML ファイルでメニューアイテムを作成することもできます。app:actionLayout
から、または MenuItemCompat.setActionView() を使用して、アイテムのカスタマイズ ビューを設定できるので、機能をさらに拡張できるようになりました。
Percent
Percent のサポート ライブラリでは寸法とマージンに基づくパーセンテージ が提供されており、今回のリリースで新たに app:aspectRatio でアスペクト比のカスタマイズ設定
ができるようになりました。aspectRatio は幅または高さを 1 つだけ設定するので、PercentFrameLayout や PercentRelativeLayout がその他の寸法を自動的に調整し、レイアウトでは設定されたアスペクト比が使用されます。
カスタム タブ
カスタム タブのサポート ライブラリ を使えば、(プリフェッチによって)ロード時間を短縮したり、カスタマイズされたルックとアクションを維持しながら既存の Cookie を利用したりするなど、互換性のあるブラウザの機能をアプリでフル活用できます。
今回のリリースでは、新しい enableUrlBarHiding() メソッドを使用してページを下にスクロールすると URL バーを非表示にするなどのカスタマイズが多少追加されています。また、setActionButton() が含まれるCustomTabsSession から、すでに起動されているカスタム タブのアクション ボタンをアップデートすることもできます。これで状態の変更がわかりやすくなります。
CustomTabsCallback#onNavigationEvent() を経由するナビゲーション イベントも拡張され、新たに TAB_SHOWN イベントと TAB_HIDDEN イベントが含まれるようになりました。これにより、デベロッパーのウェブ コンテンツに対してユーザーがどのように反応しているかという情報をアプリで把握できます。
Leanback
Leanback のライブラリを使用すれば、テレビ デバイスのユーザー インターフェースを簡単にビルドできます。今回のリリースでは GuidedStepFragment バージョンをサポートする GuidedStepSupportFragment が追加され、またアニメーションと遷移も改善され、既存コンテンツのトップに GuidedStepFragment を置くことができるようになりました。
SearchFragment ではさまざまなタイプの検索の完了に注釈を付けることが、VerticalGridFragment ではスライド遷移を調整できるようになりました。
Palette
画像から色を抽出するために使用される Palette に新しい setRegion() メソッドが追加され、ビットマップの特定のエリアからも抽出できるようになりました。
SDK は今すぐご利用頂けます
今すぐ Android サポート ライブラリを使ってみましょう。Android SDK Manager から Android サポート リポジトリをアップデートして、すぐに開発を始めましょう。
今回のリリースにおける各 API の変更の詳細は full API diff をご覧ください。
Android サポート ライブラリや利用可能な API の詳細については、Android デベロッパー サイトの サポート ライブラリ セクション をご覧ください。
Posted by Eiji Kitamura - Developer Relations Team