การสมจริงช่วยให้คุณมีทางเลือกมากขึ้นในการใช้อินพุตของผู้ใช้และสร้างผู้ใช้ อินเทอร์เฟซ วิธีนี้ช่วยให้คุณสร้างประสบการณ์ ที่กำหนดเองมากที่สุด แต่เกี่ยวข้องกับงานมากที่สุด
หากคุณพัฒนาสำหรับ Glass เป็นครั้งแรก โปรดอ่าน คำแนะนำเกี่ยวกับ Immersion แทน เอกสารดังกล่าวอธิบายวิธีสร้าง Glassware ที่สมบูรณ์ จดจ่อกับประสบการณ์ โดยอิงตามแนวทางปฏิบัติที่ดีที่สุดในการออกแบบ
วิธีการทำงาน
การแสดงแบบ Immersive จะแสดงนอกไทม์ไลน์ คุณจึงควบคุมได้เต็มที่ ประสบการณ์ของผู้ใช้นับตั้งแต่เวลาที่ Glass เปิดตัวความสมจริง
คุณสร้างความสมจริงด้วยกิจกรรม Android แบบมาตรฐาน เลย์เอาต์, วิดเจ็ต UI, และส่วนอื่นๆ ของแพลตฟอร์ม Android จากนั้นคุณใช้ GDK เพื่อผสานรวมเข้ากับประสบการณ์ Glass เช่น การผสานรวมคำสั่งเสียง การ์ดสไตล์ Glass และอื่นๆ
เมื่อเริ่มความสมจริง ฟีเจอร์จะปรากฏที่ด้านบนของไทม์ไลน์ เมื่อผู้ใช้ได้ดื่มด่ำกับประสบการณ์แล้ว พวกเขาจะ กลับออกด้วยการเลื่อนลง
ควรใช้ในกรณีใด
การสมจริงนั้นเหมาะสำหรับประสบการณ์ที่ต้องใช้ความสนใจของผู้ใช้เป็นเวลานาน ให้คุณสร้าง UI พิเศษ ซึ่งจะปรากฏนอกลำดับเวลา ผู้ใช้เจาะลึกเกี่ยวกับประสบการณ์ที่กำหนดเองได้
คุณยังต้องใช้โหมด Immersion เมื่อคุณต้องการเขียนทับไทม์ไลน์ที่เจาะจงด้วย เช่น การปัดไปข้างหน้าและข้างหลัง และการควบคุม ระยะหมดเวลาหน้าจอ
แต่ให้ใช้การแช่น้ำในกรณีที่จำเป็นเท่านั้น เนื่องจาก ต้องใช้เวลาสร้างมากขึ้นและมีเวลาออกแบบได้ดี การ์ดสดให้ข้อมูลที่เพียงพอ คุณลักษณะและขีดความสามารถสำหรับ Glassware ส่วนใหญ่
สร้างความสมจริง
คุณสร้างความสมจริงโดยใช้ กิจกรรม Android แต่เก็บ สิ่งที่ควรคำนึงถึงเมื่อเขียนกิจกรรมสำหรับ Glass
- ออกแบบ UI สำหรับหน้าจอ 640×360 พิกเซล
- ออกแบบการโต้ตอบที่เหมาะสมบน Glass แทนการพอร์ต กิจกรรมจากอุปกรณ์ Android อื่นๆ
- อย่าใช้ท่าทางแตะสัมผัสหรือรูปแบบ UI ที่ซับซ้อน
- การเลื่อนลงจะย้อนกลับในสแต็กกิจกรรมจนกว่าผู้ใช้จะไปถึงไทม์ไลน์ ควร ทำงานคล้ายกับปุ่มย้อนกลับของ Android บนสมาร์ทโฟนและแท็บเล็ต
- สร้างไอคอนขนาด 50 × 50 พิกเซลและระบุสำหรับแอตทริบิวต์
android:icon
ของ องค์ประกอบ<activity>
ในไฟล์ Manifest ของ Android และระบุข้อความสำหรับandroid:label
ด้วย การดําเนินการนี้อนุญาตให้มีรายการเมนูเสียงหรือการแตะ ที่เชื่อมโยงกับ Glassware หลายรายการเพื่อวัตถุประสงค์ต่อไปนี้ แสดงชื่อและไอคอนของ Glassware ของคุณเป็นตัวเลือก - ระบุ
android:immersive="true"
สำหรับเอลิเมนต์<activity>
เพื่อเพิ่มโฟกัสที่สมจริงหลังจากหน้าจอเข้าสู่โหมดสลีปแล้ว ตื่น
การสร้างและการแสดงเมนู
กระจกแสดงการจัดรูปแบบที่ถูกต้อง สำหรับเมนู หากคุณสร้างโดยใช้เมนู Android มาตรฐาน API ภายในกิจกรรม
หากต้องการแสดงเมนูสำหรับกิจกรรม ให้สร้างทรัพยากรเมนู แล้ว แสดงในการดำเนินการของผู้ใช้ เช่น การแตะเมื่อกิจกรรมของคุณ มีสมาธิ
กำลังสร้างแหล่งข้อมูลเมนู
การสร้างทรัพยากรเมนูนั้นเหมือนกับการสร้างบนแพลตฟอร์ม 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
การจัดการ Callback ของเมนู
Activity
มี Callback ที่คุณลบล้างเพื่อจัดการการสร้างเมนู การแสดงผล และการทำลายลง:
onCreateOptionsMenu()
ขยายทรัพยากรเมนู XMLonPrepareOptionsMenu()
แสดงหรือซ่อนรายการในเมนูหากจำเป็น ตัวอย่างเช่น คุณสามารถแสดงรายการในเมนูที่แตกต่างกัน ตามสิ่งที่ผู้ใช้กำลังทำ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
เพื่อดูข้อมูลเพิ่มเติม