カスタムレイアウトの作成

一覧に戻る

スクリーンサイズと一見性を考慮したデザインという点を除けば、ウェアラブル端末用のレイアウト作成は携帯デバイスと同じです。良いユーザー体験は除きますが、携帯アプリの機能やUIを持ち込むべきではありません。必要な場合のみカスタムレイアウトを作成すべきです。良いウェアラブルアプリのデザイン方法についてはデザインガイドラインを読んでください。

カスタムNotificationを作成する

一般的には、携帯デバイスで通知を作成しそれを自動的にウェアラブル端末に同期するようにします。ひとたび通知を構築すれば、それぞれ異なるフォームファクターのためにデザインを行わなくても、多くの種類のデバイス(ウェアラブル端末だけではくやがてはAutoやTV)に表示されます。

スタンダードな(NotificationCompat.BigTextStyleやNotificationCompat.InboxStyleといった)通知スタイルでは目的に合わない場合、カスタムしたレイアウトのアクティビティを表示することができます。単にカスタム通知を生成しそれをウェアラブル端末に発行します。システムはそれらの通知を携帯端末には同期しません。

注意:ウェアラブルのカスタム通知を生成する場合、サポート・ライブラリの代わりに標準の通知API(API Level20)を使用する事ができます。

カスタム通知を作成するには:

1. レイアウトを作成し表示したいアクティビティのコンテンツビューにセットします。

public void onCreate(Bundle bundle){
...
setContentView(R.layout.notification_activity);
}

2.  ウェアラブル端末のコンテキストストリームプロセスにアクティビティの表示を許可するようにアクティビティに必要なプロパティをAndroidマニフェストに定義します。アクテビティをエクスポートを可能に、組み込みを可能に、タスク一体性を空白として定義する必要があります。またテーマをTheme.DeviceDefault.Lightに設定することをおすすめします。例えば次のようにします。

<activity android:name="com.example.MyDisplayActivity"
android:exported="true"
android:allowEmbedded="true"
android:taskAffinity=""
android:theme="@android:style/Theme.DeviceDefault.Light" />

3. 表示したいアクテビティ用にペンディングインテントを作成します。例えば次のようにします。

Intent notificationIntent = new Intent(this, NotificationActivity.class);
PendingIntent notificationPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);

4. 通知を作成しPendingIntentのsetDisplayIntent()を呼び出します。システムは、このペンディングインテントをユーザが通知を見る時にアクテビティを起動するために使用します。

5. notify()メソッドで通知を発行します。

注意:通知がホームスクリーン上に覗いている時、システムは通知のセマンティックデータから生成し、通常のテンプレートを使用して通知を表示します。このテンプレートは全ウォッチフェイスに適しています。ユーザが通知を上にスワイプした時に通知のカスタムアクティビティが表示されます。

ウェアラブルUIライブラリでレイアウトを作る

Android Studioプロジェクトウィザードでウェアラブルアプリを作った時に自動的にインクルードされる非公式なUIライブラリです。build.gradeファイルに次のように依存関係を宣言してライブラリを追加することもできます。

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.support:wearable:+'
compile 'com.google.android.gms:play-services-wearable:+'
}

これらのライブラリはウェアラブルのために設計されたUIを構築することができます。これらは主要なクラスの一部です。

  • BoxInsetLayout – スクリーン形状を認識して丸型ディスプレイの中央に四角形の子レイアウトとしてボックス化するFrameLayout
  • CardFragment – 拡張範囲内のコンテンツを提示する垂直にスクロール可能なカードのフラグメント
  • CircledImageView – 丸で囲まれた画像
  • ConfirmationActivity – ユーザーがアクションした後に確認のアニメーションを表示するActivity
  • DismissOverlayView -長押しで非表示になるビュー
  • GridViewPager – 水平と垂直にページデータを移動するためのレイアウトマネージャ。ビューが示すページを生成するためにGridPagerAdapterを提供する必要がある
  • GridPagerAdapter – GridViewPagerにページを提供するアダプター
  • FragmentGridPagerAdapter – 各ページをフラグメントにしたGridPagerAdapterの実装。
  • WatchViewStub – デバイスの画面形状に応じて特定のレイアウトをインフレート出来るクラス
  • WearableListView – 小さなウェアラブルデバイスで使いやすいように最適化されたListViewの別バージョン。垂直スクロールのリストを表示し、スクロールを停止した時に自動的に一番近い項目で止まる

上記クラスの完全なAPIリファレンスドキュメントをダウンロードして下さい。このドキュメントはそれぞれのUIウィジェットの使用方法が記載されています。

次:音声機能を追加する>

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です