ท่าทางสัมผัสด้วยข้อมือช่วยให้โต้ตอบกับแอปของคุณได้อย่างรวดเร็วโดยใช้มือเดียว เมื่อใช้งานหน้าจอสัมผัสได้ไม่สะดวก
เช่น ผู้ใช้สามารถเลื่อน ผ่านการแจ้งเตือนด้วยมือข้างเดียวขณะถือแก้วน้ำที่มี อื่นๆ กรณีการใช้งานอื่นๆ สำหรับการเคลื่อนไหวข้อมือมีดังนี้
- ในแอปจ็อกกิ้ง การนำทางผ่านหน้าจอแนวตั้งที่แสดง จำนวนก้าว เวลาที่ผ่านไป และเพซปัจจุบัน
- ในแอปท่องเที่ยว การเลื่อนดูข้อมูลเที่ยวบินและประตูทางออก
- ในแอปข่าว การเลื่อนดูบทความ
วิธีตรวจสอบท่าทางสัมผัสด้วยข้อมือบนนาฬิกา อุปกรณ์ ให้ยืนยันว่าท่าทางสัมผัส เปิดโดยเลือกการตั้งค่า > ฟีเจอร์ขั้นสูง > ท่าทางสัมผัส > ท่าทางสัมผัสด้วยข้อมือ เปิด จากนั้นทำ บทแนะนำเกี่ยวกับท่าทางสัมผัสในนาฬิกาโดยเลือกเปิดบทแนะนำ
หมายเหตุ: การเขย่าข้อมือเป็นการถอยหลังหรือท่าทางสัมผัสสำหรับเลิกทำทั้งระบบ และไม่สามารถปรับแต่งแอปได้
ท่าทางสัมผัสด้วยข้อมือสามารถใช้ในลักษณะต่อไปนี้ได้ ดังที่อธิบายไว้ในคู่มือนี้
- มีการจัดวางแบบโค้ง มีการดำเนินการโดยใช้ท่าทางสัมผัสที่กำหนดไว้ล่วงหน้า
- ใช้เหตุการณ์สําคัญโดยตรงเพื่อดำเนินการต่อไปนี้ กำหนดการดำเนินการของผู้ใช้ใหม่
ท่าทางสัมผัสของข้อมือแต่ละอันจะจับคู่กับค่าคงที่ int
จาก
วันที่ KeyEvent
ดังที่แสดงในตารางต่อไปนี้
ท่าทางสัมผัส | เหตุการณ์สําคัญ | คำอธิบาย |
---|---|---|
สะบัดข้อมือออก |
KEYCODE_NAVIGATE_NEXT
|
รหัสคีย์นี้จะไปยังรายการถัดไป |
สะบัดข้อมือเข้า |
KEYCODE_NAVIGATE_PREVIOUS
|
รหัสคีย์นี้จะไปยังรายการก่อนหน้า |
ใช้เลย์เอาต์แบบโค้งเพื่อรองรับท่าทางสัมผัสด้วยข้อมือ
คลาส
WearableRecyclerView
จะมีแผนภูมิโค้ง
เลย์เอาต์สำหรับรายการและรองรับ
ด้วยการเคลื่อนไหวข้อมือ คลาสมีการดำเนินการที่กำหนดไว้ล่วงหน้าสำหรับรายการ
ท่าทางสัมผัสด้วยข้อมือเมื่อมุมมองมีโฟกัส สำหรับข้อมูลเกี่ยวกับการใช้
ชั้นเรียน WearableRecyclerView
โปรดดูหัวข้อสร้างรายการใน Wear OS นอกจากนี้ โปรดดู
ส่วนแนวทางปฏิบัติแนะนำของคู่มือนี้
หมายเหตุ: คลาส WearableRecyclerView
จะแทนที่คลาส
เลิกใช้งานในไลบรารีการสนับสนุนของอุปกรณ์สวมใส่แล้ว
แม้ว่าคุณจะใช้ WearableRecyclerView
แต่คุณอาจต้องการใช้
ค่าคงที่จาก KeyEvent
การดำเนินการที่กำหนดไว้ล่วงหน้าสามารถลบล้างได้ด้วยการแยกประเภทย่อย
WearableRecyclerView
และนำพารามิเตอร์
onKeyDown()
Callback ปิดใช้ลักษณะการทำงานได้ทั้งหมด
โดยใช้ setEnableGestureNavigation(false)
สำหรับข้อมูลเพิ่มเติม โปรดดู
จัดการการดำเนินการของแป้นพิมพ์
ใช้เหตุการณ์สําคัญโดยตรง
คุณสามารถใช้เหตุการณ์สำคัญภายนอก
WearableRecyclerView
เพื่อทริกเกอร์การดำเนินการใหม่ตามท่าทางสัมผัส
กิจกรรม ที่สำคัญระบบจะจดจำเหตุการณ์ท่าทางสัมผัสเหล่านี้เมื่ออุปกรณ์อยู่ใน
ทำงาน และจะแสดงในลักษณะเดียวกับเหตุการณ์สำคัญทั้งหมด
คลาสที่เกี่ยวข้องกับการโต้ตอบของผู้ใช้ เช่น View
หรือ
Activity
และดำเนินการ
KeyEvent.Callback
สามารถฟังเหตุการณ์สําคัญที่เกี่ยวข้องกับ
ท่าทางสัมผัสด้วยข้อมือเช่นเดียวกับที่แสดงต่อเหตุการณ์สำคัญอื่นๆ เฟรมเวิร์ก Android
จะโทรหา View
หรือ Activity
ที่มี
โฟกัสที่เหตุการณ์สําคัญ สำหรับท่าทางสัมผัส พารามิเตอร์ onKeyDown()
ระบบจะเรียกเมธอด Callback เมื่อมีการท่าทางสัมผัสเกิดขึ้น
เช่น แอปลบล้างการดำเนินการที่กำหนดไว้ล่วงหน้าใน View
ได้
หรือ Activity
ที่ใช้ KeyEvent.Callback
ดังนี้
Kotlin
class GesturesActivity : Activity() { /* KeyEvent.Callback */ override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_NAVIGATE_NEXT -> // Do something that advances a user View to the next item in an ordered list. moveToNextItem() KeyEvent.KEYCODE_NAVIGATE_PREVIOUS -> // Do something that advances a user View to the previous item in an ordered list. moveToPreviousItem() else -> { // If you did not handle it, let it be handled by the next possible element as determined // by the Activity. super.onKeyDown(keyCode, event) } } } /** Shows the next item in the custom list. */ private fun moveToNextItem(): Boolean { ... // Return true if handled successfully, otherwise return false. return false } /** Shows the previous item in the custom list. */ private fun moveToPreviousItem(): Boolean { ... // Return true if handled successfully, otherwise return false. return false } }
Java
public final class GesturesActivity extends Activity { @Override /* KeyEvent.Callback */ public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_NAVIGATE_NEXT: // Do something that advances a user View to the next item in an ordered list. return moveToNextItem(); case KeyEvent.KEYCODE_NAVIGATE_PREVIOUS: // Do something that advances a user View to the previous item in an ordered list. return moveToPreviousItem(); } // If you did not handle it, let it be handled by the next possible element as determined by the Activity. return super.onKeyDown(keyCode, event); } /** Shows the next item in the custom list. */ private boolean moveToNextItem() { boolean handled = false; ... // Return true if handled successfully, otherwise return false. return handled; } /** Shows the previous item in the custom list. */ private boolean moveToPreviousItem() { boolean handled = false; ... // Return true if handled successfully, otherwise return false. return handled; } }
แนวทางปฏิบัติแนะนำ
- ตรวจสอบ
KeyEvent
และหน้าKeyEvent.Callback
สำหรับการแสดงเหตุการณ์สำคัญไปยังView
และActivity
ของคุณ - มีทิศทางที่สม่ำเสมอ: ใช้ "สะบัดข้อมือออก" สำหรับ ถัดไปและ "สะบัดข้อมือเข้า" สำหรับส่วนก่อนหน้า
- แตะคู่ขนานเพื่อท่าทางสัมผัส
- แสดงความคิดเห็นด้วยภาพ
- อย่าใช้รหัสคีย์เพื่อใช้งานฟังก์ชันที่อาจ
ใช้งานยากกับส่วนอื่นๆ ในระบบ ตัวอย่างเช่น อย่าใช้
KEYCODE_NAVIGATE_NEXT
เพื่อยกเลิกการดำเนินการหรือไปยังส่วนต่างๆ แกนด้านซ้าย-ขวาที่มีการสะบัดนิ้ว - อย่าสกัดกั้นเหตุการณ์สำคัญในองค์ประกอบที่ไม่ได้เป็นส่วนหนึ่งของ อินเทอร์เฟซผู้ใช้ เช่น การดูนอกหน้าจอหรือบางส่วน ที่ครอบคลุม ซึ่งจะเหมือนกับเหตุการณ์สําคัญอื่นๆ
- อย่าตีความท่าทางสัมผัสการสะบัดซ้ำๆ เป็นท่าทางสัมผัสแบบใหม่ ซึ่งอาจขัดแย้งกับ "การสั่นข้อมือ" ของระบบ ท่าทางสัมผัส
หากต้องการให้มุมมองรับเหตุการณ์สำคัญด้วยท่าทางสัมผัส จะต้องมี โฟกัส ดู
View.setFocusable()
เนื่องจากท่าทางสัมผัสถือเป็นเหตุการณ์สําคัญ อุปกรณ์จะทริกเกอร์การเปลี่ยนจาก "โหมดสัมผัส" ซึ่งอาจสร้างโดยไม่คาดคิด สิ่งต่างๆ เนื่องจากผู้ใช้อาจสลับใช้การแตะและ อาจจำเป็นต้องใช้เมธอด
View::setFocusableInTouchmode()
ในบางส่วน คุณยังอาจจำเป็นต้องใช้setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS)
ดังนั้น เมื่อโฟกัสเปลี่ยนหลังจากเปลี่ยนเป็นหรือจากโหมดสัมผัส มุมมองที่ต้องการจะได้รับการโฟกัส- ใช้
requestFocus()
และ วันที่clearFocus()
อย่างรอบคอบ:- เมื่อโทรหา
requestFocus()
โปรดตรวจสอบว่าเหมาะสมสำหรับ เพื่อให้มีสมาธิ หากมุมมองอยู่นอกหน้าจอหรือถูกบังด้วยมุมมองอื่น ซึ่งอาจเกิดขึ้นเมื่อท่าทางสัมผัสทำให้เกิด Callback - เมธอด
clearFocus()
จะเริ่มการค้นหาโฟกัสเพื่อค้นหารายการอื่น มุมมองที่เหมาะสม การค้นหานี้อาจ ต้องใช้การคำนวณที่ไม่สำคัญ และสุดท้ายยังอาจเป็นการกำหนดจุดโฟกัส มุมมองที่คุณไม่คาดว่าจะมีคนสนใจ
- เมื่อโทรหา
ระบบจะส่งเหตุการณ์สําคัญไปยังข้อมูลพร็อพเพอร์ตี้ก่อนโดยโฟกัสอยู่ในมุมมอง ลำดับชั้น หากมุมมองที่โฟกัสจัดการกิจกรรมไม่ได้ กล่าวคือ จะแสดง
false
- ระบบจะไม่ส่งกิจกรรมไปยังมุมมองระดับบนสุด รับโฟกัสได้และมีKeyListener
หรือไม่ แต่ระบบจะส่งเหตุการณ์ไปที่กิจกรรมปัจจุบันแทน มีลำดับชั้นการแสดงผลโดยมีโฟกัสอยู่ดังนั้น เราจึงอาจจำเป็นต้อง ตรวจจับเหตุการณ์ทั้งหมดในระดับที่สูงขึ้น แล้วส่งรหัสที่เกี่ยวข้องลงไป อีกทางเลือกหนึ่งคือ คุณอาจจัดประเภทย่อยกิจกรรมและลบล้าง เมธอด
dispatchKeyEvent(KeyEvent event)
ในการสกัดกั้นคีย์ เมื่อจำเป็น หรือจัดการเมื่อไม่ได้จัดการ ด้านล่าง