これまでのAndroidでは、ユーザーは、通知を受け取った際に決まりきった操作しかできませんでした。4.1では、ユーザーはNotificationから直接アクションを起こせます。メールや電話発信のためにアプリを介さずともよくなるなど、通知内の情報に直接応答できるようになります。例えば、会議に遅れたときにメールで皆に通知したり、電話受信を逃したときでも即座にコールバックできます。
また、写真など新しい種類のコンテンツをサポートし、表示項目に優先順位を設定可能になりました。さらに、Notification自体をピンチやスワイプで展開および縮小して表示可能になったため、複数のメールや写真などをGoogle+のように一覧表示できます。
開発者はアプリのUI以外でも、ユーザーにとって重要な情報や、スケジュール情報を表示するためにNotificationを使えます。さらにNotificationに、複数のアクションを含めることができます。
また4.1では、Notificationフレームワークが大きくアップデートしました。改良されたNotification.Builderを使うと、最大高さ256ドットの大きな領域でNotificationを作成できます。以下3つのNotificationテンプレートが利用可能です。
追加されたテンプレートスタイルに加え、開発者は任意のリモートビューを使用して独自のスタイルを作成できます。
4.1では、ホーム画面のカスタマイズがより簡単になりました。ユーザーがホーム画面にドロップした場所に基づいて自動的にサイズを変更できる改善されたApp Widgetを導入しました。App Widgetを配置する際は、ほかのApp Widgetが自動的にスペースを空けるために移動します。App Widgetが大き過ぎる場合は、自動的にリサイズします。
4.0までは、ホーム画面のカスタマイズが決して容易ではありませんでしたが、4.1ではApp Widgetのサイズ変更に応じてコンテンツのサイズを最適化できるようになり、App Widget APIを最大限に活用できます。
App Widgetのサイズが変更された際に、システムは必要に応じてApp Widgetのコンテンツをリロードでき、ホストアプリのAppWidgetProviderに通知します。例えば、App Widgetが大きければ大きいほど、より豊かなグラフィックスや追加機能、オプションを表示できます。
開発者は最大サイズと最小サイズの制御ができ、必要に応じて、いつでも他のApp Widgetのオプションを更新できます。また、横長と縦長で別々のレイアウトを指定することで、画面の向きが変化した際にシステムによって適切にApp Widgetが描画できます。
App Widgetは、新しいバインドインテント(AppWidgetManager.ACTION_APPWIDGET_BIND)を介して、サードパーティ製のランチャーおよびホストアプリで表示できます。
開発者はNotificationとApp Widgetで、GridLayoutとViewStubを使えるようになりました。GridLayoutは開発者のリモートビューを構成する浅いUI階層を持ち、子ビューの配置を管理します。ViewStubは遅延実行時にレイアウトリソースを膨らませるために使用できる、目に見えない0サイズのビューです。
4.1では、簡単にライブ壁紙を含むアプリからライブ壁紙を見つけてインストールできるようになります。
アプリにライブ壁紙が含まれている場合、ライブ壁紙のプレビューを表示するActivityを(「ACTION_CHANGE_LIVE_WALLPAPER」により)開始できます。ユーザーはプレビューから直接ライブ壁紙を読み込めます。
Android 4.1は、開発者のアプリ内で簡単にユーザー体験の一貫性を保障するための「Up」ナビゲーションを管理できるようになります。
開発者はアプリのマニフェストファイルに、「Up」ナビゲーション用の新しいXML属性を追加し、UIの個々のActivityコンポーネントを定義できます。Activityが開始されると、システムはマニフェストファイルから最大ナビゲーションツリーを抽出し、自動的にアクションバーの「Up」ナビゲーションを作成します。開発者は、実行時にコールバックでナビゲーションを管理する必要はありません。
「TaskStackBuilder」は、ActivityがPendingIntentから起動されたときに使用できる新しいクラスです。開発者は、すぐに開始する合成タスクスタックを一緒に入れられます。開発者が合成タスクスタックを作成することは、ユーザーがApp WidgetやNotificationなどのリモートビューからActivityを起動する際に、「Back」ナビゲーションを管理し、一貫した体験を提供するのに便利です。
ビューの新しいシステムUIフラグで、開発者は普通のアプリのUI(アクションバー、ナビゲーションバー、システムバー)から「ライトアウトモード」(非表示のアクションバーとナビゲーションバー、薄暗いシステムバー)または「フルスクリーンモード」(非表示のアクションバー、ナビゲーションバー、システムバー)へきれいに遷移できます。
開発者は自身のActivityを起動するときに表示されるアニメーションを作成し、制御するための新たなヘルパークラス「ActivityOptions」を使えます。ヘルパークラスを介して、Activityを起動するのに使用するカスタムアニメーションのリソース、または開始時の画面および必要に応じてサムネイルやビットマップが含まれる任意の矩形を指定した新しいズームアニメーションで開始要求を行えます。
4.1では、より多くの柔軟性を与えるためにレンダースクリプト演算を拡張します。開発者はレンダースクリプト演算内のテクスチャをサンプリングでき、スクリプトで必要とされる浮動小数点の精度を定義可能です。これは、IEEE 754-2008規格では不可能なCPUバス上などの高速なベクトル演算操作などのNEON命令を有効にできます。
開発者はx86ベースのエミュレータとハードウェアデバイス上でレンダースクリプト演算をデバッグできます。また、単一のレンダスクリプトのソースファイル内に複数のルートスタイルのカーネルを定義できます。
4.1は、4.0をシンプルに美しく改善したバージョンで、「Project Butter」と呼ばれるOS全体の速度を改善するプロジェクトの成果が盛り込まれています。ページのスクロールやアニメーションなど、すべてがスムーズに感じられるように一貫してレンダリングするために、グラフィックスのパイプラインに「トリプルバッファリング」を追加してあります。
4.1では、ユーザーは改善された反応性とタッチ応答により、ピクセル単位の操作を体感できます。画面にタッチすることでCPUがブーストされ、Androidデバイスはさらに反応性を増します。またユーザーは、バッテリを温存するために、この機能を随時OFFにできます。
Vsyncのタイミングにタッチを同期させることなく、実際のユーザーのタッチによる画面再描画の回数を予測することもなく、タッチ応答時間を短くします。加えて、非アクティブ期間後、応答遅延をなくすためにAndroidはCPU入力ブーストを次のタッチイベントで適用します。
4.1はシステムアクティビティの全体像を生成するために、Linuxカーネルから直接データを収集する「systrace」という新しいツールで動作するように設計されています。データはレンダリングの中断や、その他の問題を切り分けるために、垂直な積み重ね時系列グラフのグループとして表されます。このツールはAndroid SDK(Tools R20以降)で使えます。
Androidフレームワーク全体のVsyncを拡張すると、より一貫したフレームレートで滑らかな、安定したUIにつながります。アプリのレンダリング、タッチイベント、画面構成、ディスプレイの再描画は、すべて16ミリ秒のVsyncのクロックに対してロックステップで実行されるため、フレームが進んだり遅れたりすることはありません。
アプリはAndroidのアニメーションフレームワークを介して、自由にVsyncのタイミングを利用できます。アニメーションフレームワークは自動的にアニメーター間での同期を処理するために、Vsyncのタイミングを使用しています。
また、4.1の新クラス「Choreographer」によって、Vsyncタイミングにアクセスできます。アニメーションフレームワークを使用していないときにアニメーションをスケジュールするための良い方法として、アプリは次のVsyncのフレームで無効化を要求できます。より高度な用途のために、アプリがChoreographerクラスで次のフレームで実行するコールバックを登録できます。
4.1のアニメーションフレームワークは、開始を定義し、ViewPropertyAnimatorアニメーションを実行するときに、実行するアクションを終了し、アプリ内の他のアニメーションやアクションで、それらを同期できるようになりました。
アクションは任意のRunnableを実行できます。例えば、Runnableはアニメーション終了時に異なるアニメーションの開始を指定することがあります。
また、現在のViewPropertyAnimatorは、そのアニメーションの過程でレイヤを使えます。これまでは、前のアニメーションを開始し、その後のアニメーションが完了した際に、レイヤを除去するonAnimationEnd()イベントを処理するレイヤを設定することにより、複雑なビューをアニメーションできていました。4.1では、ViewPropertyAnimatorのwithLayer()メソッドが、単一メソッド呼び出しでこのプロセスを簡素化します。
LayoutTransitionの新しい遷移の種類は、ViewGroupにあるすべてのレイアウトの変更に応じてアニメーションを自動化できます。
Copyright © ITmedia, Inc. All Rights Reserved.