没入型

没入感を高めると、ユーザー入力をさまざまな方法で使用し、ユーザー インターフェースを作成できます。これにより、最もカスタマイズされたエクスペリエンスを実現できますが、多くの作業が必要になります。

Glass を初めて開発する場合は、没入ガイドをご覧ください。このドキュメントでは、Google の設計のベスト プラクティスに沿って、没入型の完全な Glassware を作成する方法について説明します。

仕組み

没入感はタイムラインの外側に表示され、Glass を没入させるまでのユーザー エクスペリエンスを完全に制御できます。

標準の Android アクティビティ、レイアウト、UI ウィジェットなど、Android プラットフォームの没入感を組み込むことができます。その後、GDK を使用して、音声コマンド、Glass スタイルのカードなどの Glass との統合を行います。

没入体験が始まると、タイムライン上にそれらが表示されます。 没入感のあるユーザーは、下にスワイプして元の画面に戻ります。

アフィリエイト住所アセットの用途

没入感は、ユーザーの注意を長く必要とする場合に最適です。 タイムライン外に表示される特別な UI を作成できるため、ユーザーはカスタマイズされたエクスペリエンスを詳細に探索できます。

また、前方スワイプと後方スワイプ、画面タイムアウトの制御など、タイムライン固有の機能を上書きする必要がある場合でも没入型が必要です。

ただし、没入感は必要な場合にのみ使用してください。没入感を高めるには、作成に多くの時間と労力が必要になります。ライブカードは、ほとんどの種類の Glassware に対して十分な機能を備えています。

没入体験

標準の Android アクティビティを使用して没入型を作成しますが、Glass 向けのアクティビティを記述する場合は次の点に注意してください。

  • 640 × 360 ピクセルの画面向けに UI を設計します。
  • 他の Android デバイスのアクティビティを移植するのではなく、Glass に適したインタラクションを設計します。
  • 複雑なタップ操作や UI パターンに頼らないでください。
  • 下にスワイプすると、ユーザーがタイムラインに到達するまで、常にアクティビティ スタック内に戻ります。スマートフォン上の Android の [戻る] ボタンと同じように機能します。
  • 50 × 50 ピクセルのアイコンを作成し、Android マニフェストの <activity> 要素の android:icon 属性に指定します。android:label のテキストも指定します。これにより、複数の Glassware に関連付けられた音声またはタップのメニュー項目で、Glassware の名前とアイコンがオプションとして表示されます。
  • <activity> 要素に android:immersive="true" を指定して、画面がスリープして復帰した後の没入型のフォーカスを可能にします。

メニューを作成して表示する

アクティビティ内で標準の Android メニュー API を使用してビルドした場合、Glass はメニューに適切なスタイル設定を表示します。

アクティビティのメニューを表示するには、メニュー リソースを作成して、アクティビティがフォーカスされているときのタップなどのユーザー アクションに表示します。

メニュー リソースを作成する

メニュー リソースの作成は Android プラットフォームの場合と同じですが、以下のガイドラインに沿って行ってください。

  • メニュー項目ごとに、50 × 50 ピクセルのメニュー項目アイコンを指定します。透明な背景では、メニュー アイコンの色を白色にする必要があります。使用または例については、Glass のメニュー アイコンをダウンロードしてください。
  • 内容を説明する短いフレーズを使用します(文頭のみを大文字)。 命令形の動詞は効果があります(「共有」、「全員に返信」など)。

以下の簡単な例をご覧ください。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/reply_menu_item"
        android:title="@string/reply"                <!-- imperative verb -->
        android:icon="@drawable/icons_50_reply" />   <!-- white in color on
                                                     transparent background
                                                     -->
</menu>

Android メニューの作成について詳しくは、Android SDK ドキュメントのメニュー トピックをご覧ください。

メニュー コールバックの処理

Activity クラスには、メニューの作成、表示、破棄を処理するためにオーバーライドするコールバックが含まれています。

  1. onCreateOptionsMenu() は、XML メニュー リソースをインフレートします。
  2. onPrepareOptionsMenu() は、必要に応じてメニュー項目を表示または非表示にします。たとえば、ユーザーの操作に基づいてさまざまなメニュー項目を表示できます。
  3. onOptionsItemSelected() がユーザーの選択を処理します。

    public class MyActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.stopwatch, menu);
            return true;
        }
    
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
            // Implement if needed
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle item selection. Menu items typically start another
            // activity, start a service, or broadcast another intent.
            switch (item.getItemId()) {
                case R.id.stop:
                    startActivity(new Intent(this,
                    StopStopWatchActivity.class));
                    return true;
                default:
                    return super.onOptionsItemSelected(item);
            }
        }
    }
    

メニューの表示

メニューを表示するには、タッチパッドのタップなど、必要に応じて openOptionsMenu() を呼び出します。次の例では、アクティビティでのタップ操作を検出して openOptionsMenu() を呼び出しています。

public class MainActivity extends Activity {
    // ...
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
          if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
              openOptionsMenu();
              return true;
          }
          return super.onKeyDown(keyCode, event);
    }
}

メニューの外観や動作を変更するためのヘルパー メソッドが用意されています。詳しくは、MenuUtils をご覧ください。