沉浸式功能可讓您以更多方式使用使用者輸入內容,並建立使用者介面。這可讓您建立最多的自訂體驗,但需要完成大部分的工作。
如果這是您第一次開發 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
類別包含覆寫的回呼,用來處理選單建立、顯示和卸除作業:
onCreateOptionsMenu()
加載 XML 選單資源。- 如有需要,
onPrepareOptionsMenu()
會顯示或隱藏選單項目。舉例來說,您可以依據使用者的行為顯示不同的選單項目。 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
。