[この記事は Ian Lake、Android デベロッパー アドボケートによる Android Developers Blog の記事 "Android Support Library 22.1" を元に、萩倉が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

「最良のコードはコードがないことだ」という言葉を聞いたことがあるかもしれません。コードをまったく書かないのはお勧めしませんが、記述するなら、定型的なコードをコピーするのではなく、独自の価値をアプリに付加すべきでしょう。Android サポート ライブラリにはちょっとした工夫が施されているため、こうした価値を付加するには最適なリソースと言えます。

Android サポート ライブラリの最新リリースも例外ではなく、とても役立つコンポーネントの数々や v4 全体にわたる変更、AppCompat、Leanback、RecyclerView、パレット、Renderscript ライブラリなどを追加しています。このリリースには、新しい AppCompatActivity や AppCompatDialog から Android TV の新しい手順フローまで、わくわくする要素が数多く詰め込まれています。

サポート V4

サポート V4 ライブラリは Android サポート ライブラリのベースとして機能し、下方互換性を容易に保つことができるクラスが数多く含まれています。

DrawableCompat によって、API 4 でドローアブルによる着色が可能になります。DrawableCompat.wrap(Drawable)) でドローアブルをラップすると、setTint())、setTintList())、setTintMode()) が使えるようになります。複数色をサポートするためだけに別のドローアブルを作成して保持する必要がなくなります。

さらに、Palette の内部ロジックの一部を ColorUtils クラスで使えるようにしました。組み込みツールとして使えば、より簡単に色を扱えます。ColorUtils では、色調のコントラスト比を簡単に計算し、最小コントラスト(文字列の判読に最適)を保持する最小のアルファ値を決定します。また、色を HSL 要素に変換します。

Interpolator (補間)は、アニメーションのスピードを速めたり遅くしたり、アニメーションの変更の割合を制御するために重要なアニメーション システムです。Lollipop では android.R.interpolator にいくつかの Interpolator が追加されました。たとえば、fast_out_linear_infast_out_slow_inlinear_out_slow_in で、Authentic motion の重要な要素です。これらは FastOutLinearInInterpolatorFastOutSlowInInterpolatorLinearOutSlowInInterpolator クラスなどのサポート ライブラリから利用可能になっているため、あらゆるアニメーションのコードで使用できます。こうした組み込み Interpolator に加えて、二次、三次のベジェ曲線を造形できる PathInterpolatorCompat も作成しています。

さらに今回のリリースでは、Space ウィジェットを GridLayout ライブラリから サポート V4 に移行し、別の依存関係を作成することなく利用できるようになっています。Space ウィジェットは軽量の非表示ビューで、要素の間でギャップを作成するために使用できます。

AppCompat

AppCompat サポート ライブラリには地味でも重要な更新があります。API 7 以降のあらゆるデバイスで 1 つの統一的な Action Bar を使えるようになりました。revision 21 では、すべての API 7 以降のデバイスにマテリアル カラー パレットが導入され、ウィジェット着色、ツールバー サポートなど多くの機能が実装されています。これにより、ActionBarActivityがその名で表される以上の範囲にわたり機能するようになりました。

そこでこのリリースでは、ActionBarActivity は新しい AppCompatActivity に置き換えられます。ただし、単に名前を変更しただけではありません。AppCompat の内部ロジックが AppCompatDelegate に引き継がれています。これはあらゆる Activity に含めることができるクラスで、適切なライフサイクル メソッドの使用、統一的な同じテーマの使用、着色、などの機能が AppCompatActivity を(使用すれば簡単に始められますが)使わなくても行えます。

新しい AppCompatDelegate では、AppCompatDialog クラスを通じて、一貫したMaterial Design のダイアログへのサポートも追加しています。AlertDialog を以前使用したことがあれば、サポート ライブラリ バージョンとしてsupport.v7.app.AlertDialog が追加されたことも嬉しいニュースでしょう。同じ API で AppCompatDialog のあらゆるメリットが使えるようになります。

AppCompat を使ってウィジェットを自動的に着色する機能も、アプリのイメージを際立たせ一貫したものにするためとても便利です。それぞれ着色をサポートするように、Button を AppCompatButton に、TextView を AppCompatTextViewに置き換えるなどにより、レイアウトの装飾時に自動的に着色が行われます。今回のリリースではこの着色可能なウィジェットが広く使用できるようになり、サポートされているウィジェットの一部でサブクラスが必要なことがあっても、自動着色機能を使い続けることができます。

現時点で、着色可能なウィジェットには以下のものがあります。
  • AppCompatAutoCompleteTextView
  • AppCompatButton
  • AppCompatCheckBox
  • AppCompatCheckedTextView
  • AppCompatEditText
  • AppCompatMultiAutoCompleteTextView
  • AppCompatRadioButton
  • AppCompatRatingBar
  • AppCompatSpinner
  • AppCompatTextView

Lollipop では、android:theme XML 属性を使ってビューごとにテーマを上書きできます。明色のアクティビティ上に暗色のアクションバーを表示するときなどに非常に便利です。AppCompat では、以前の app:theme に代わり、ツールバーのandroid:theme が使えるようになります。また、API 11 以降のデバイスですべてのビューをサポートする android:themeが導入されます。

AppCompat を使ったことがなくても、簡単に始められますのでお試しください。ユーザーに一貫したデザインを届けましょう。


Leanback

Android TV アプリに数々のベスト プラクティスを提供する Leanback ライブラリを使うと、新しい手順案内機能が提供され、TV の可視性を高める必要がなくなります。
クラスやテーマがまとめられ、複数の手順があるプロセスの構築に使用できます。左側にガイドビューが、右側にアクションの一覧が表示され、Android TV で特に見栄えがします。Theme.Leanback.GuidedStep の親としてテーマを通じてカスタマイズできます。さらに多くのカスタマイズが必要な場合は、GuidanceStylist や GuidedActionsStylist を通じてカスタマイズすることも可能です。

また、多くのバグ修正、パフォーマンスの改善、ライブラリ全体の質の向上などが実装されています。Leanback がユーザーに対しても開発者に対してもより良いものになることが目標です。

RecyclerView

バグ修正に加えて、このリリースでは新しい SortedList データ構造が追加されました。このコレクションではカスタム オブジェクトの並べ替えリストを容易に保つことができ、RecyclerView.Adapter を通じてデータが変更されるため変更イベントが正しく送信されます。RecyclerView によって提供される、アニメーションに追加、削除、移動、変更された項目が保たれます。

さらに、SortedList はバッチ変更もサポートしています。1 つの操作セットをアダプターに送るだけで、多くの項目が同時に変更され、操作性が最適になります。

Palette

画像から色を抽出する際に Palette を使っているユーザーには、今回のリリースによって質を低下させることなく速度が 6 ~ 8 倍に向上することは朗報でしょう。

Palette は今回のリリースで、Builder パターンを使ってインスタンス化されるようになります。Palette.generate(Bitmap)や同等のものを直接呼び出す代わりに Palette.from(Bitmap)) を使って Palette.Builder を取得するようになります。generate() や generateAsync() を呼び出して色の Swatch を取得する前に、任意で色の最大数を変更し、Palette に対して実行される画像の最大サイズを設定できます。

Renderscript

Renderscript によって大量の演算が可能になります。サポート ライブラリ バージョンでは、Script Intrinsic という名の事前定義された数多くのスクリプトが API 8 以降のすべてのデバイスで使用できます。このリリースでは、本来の Renderscript の機能が使えるかどうかを判断する検出アルゴリズムが改善され、あらゆるデバイスで信頼性とパフォーマンスが向上します。最速で最も信頼性の高い実装が常に選択されるようになります。さらに次の 2 つの Intrinsic が追加されます。ScriptIntrinsicHistogram と ScriptIntrinsicResize、コレクションが 10 個になります。

SDKは今すぐ入手可能

Android サポート ライブラリを使い始めるには、今が最適です。Android SDK Manager から Android サポート ライブラリと Android サポート リポジトリをダウンロードして、すぐに開発を始めましょう。

Android サポート ライブラリや利用可能な API の詳細については、Android デベロッパー サイトの サポート ライブラリ セクションをご覧ください。


Posted by Takeshi Hagikura - Developer Relations Team