浸入式

沉浸式功能可讓您以更多方式使用使用者輸入內容,並建立使用者介面。這可讓您建立最多的自訂體驗,但需要完成大部分的工作。

如果這是您第一次開發 Glass,請改為參閱沉浸式指南。本文件將介紹如何按照設計流程建構完整和沈浸式的 Glassware。

運作方式

Glass 會在時間軸以外的位置顯示沉浸式顯示效果,讓您完全掌控 Google 從 Glass 啟動時間的使用者體驗。

您可以使用標準 Android 活動、版面配置、UI 小工具和 Android 平台的其餘部分來打造沉浸式體驗。然後,您可以使用 GDK 整合 Glass 體驗,例如整合語音指令、玻璃樣式的卡片等。

浸入式時間會顯示在時間軸頂端。 使用者完成沉浸式操作後,就會向下滑動。

使用時機

沉浸式體驗非常適合需要使用者註意的體驗。 這類元件可讓您建立顯示在時間軸外的特殊 UI,讓使用者能夠深入瞭解自訂體驗。

如果需要覆寫時間軸專屬功能 (例如往前或向後滑動,以及控制螢幕逾時),也需有沉浸式。

但請只在需要的時候才使用身歷其境的體驗,因為這類專案需要花費更多時間進行建構,需要更多時間來設計。即時資訊卡對大多數類型的 Glassware 提供足夠的功能和功能。

建立沉浸式體驗

您可以使用標準 Android 活動建立沉浸式體驗,但為 Glass 編寫活動時,請注意下列事項:

  • 設計 640 × 360 像素螢幕的使用者介面。
  • 設計適合在 Glass 上進行的互動,而非從其他 Android 裝置轉移活動。
  • 請勿採用複雜的觸控手勢或使用者介面模式。
  • 向下滑動至活動堆疊中,直到使用者到達時間軸為止。其功能與智慧型手機和平板電腦上的 Android 返回按鈕類似。
  • 建立 50 × 50 像素的圖示,並為 Android 資訊清單中 <activity> 元素的 android:icon 屬性指定該圖示。同時指定 android:label 的文字。這樣一來,與多個 Glassware 相關聯的語音或觸控選單項目就能以您的選項顯示 Glassware 的名稱和圖示。
  • <activity> 元素指定 android:immersive="true",以便在螢幕休眠且喚醒後聚焦。

建立及顯示選單

如果您在活動中使用標準 Android 選單 API 建構選單,Google 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