อุปกรณ์ Wear OS บางรุ่นมีปุ่มหมุนด้านข้าง เมื่อผู้ใช้หมุน ปุ่มนี้จะเลื่อนมุมมองปัจจุบันของแอปขึ้นหรือลง การป้อนข้อมูลประเภทนี้เรียกว่า การใส่ข้อมูลด้วยปุ่มหมุน
หมายเหตุ: คู่มือนี้พูดถึงการจัดการการป้อนข้อมูลด้วยปุ่มหมุนโดยใช้ UI ที่อิงตามการดู ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการการป้อนข้อมูลด้วยปุ่มหมุนโดยใช้ Compose สำหรับ Wear OS ได้ที่ การป้อนข้อมูลด้วยปุ่มหมุนใน Compose
คอนเทนเนอร์ที่เลื่อนได้จำนวนมาก เช่น
ScrollView
,
ListView
,
HorizontalScrollView
,
และ WearableRecyclerView
รองรับการใส่ข้อมูลด้วยปุ่มหมุนหากกล้องโฟกัสได้โดยไม่ต้องใช้ Wear
รหัสเฉพาะระบบปฏิบัติการ
การมุ่งเน้นคือข้อกำหนดเบื้องต้นที่สำคัญ เพราะใน Android 9 (ระดับ API
28) และสูงกว่า การดูนั้นไม่ได้รับการเน้นโดยนัย
แนวทางปฏิบัติแนะนำสำหรับการโฟกัส
คอนเทนเนอร์แบบเลื่อนได้ต้องมีโฟกัสจึงจะตอบสนองต่อเหตุการณ์การป้อนข้อมูลแบบหมุนได้
กิจกรรมการป้อนข้อมูลแบบหมุนไม่แสดงขึ้นในมุมมอง
ลำดับชั้น หากไม่มีมุมมองที่โฟกัส หรือหากมุมมองที่โฟกัสแสดงผล false
จาก
View.onGenericMotionEvent()
,
ระบบจะส่งเหตุการณ์ไปที่
Activity.onGenericMotionEvent()
แนวทางปฏิบัติแนะนำเกี่ยวกับการตอบสนองต่อเหตุการณ์การป้อนข้อมูลด้วยปุ่มหมุนมีดังนี้
- โปรดทราบว่า โดยค่าเริ่มต้น การเปิดใช้งานกิจกรรมหรือแม้กระทั่งการแตะ
ก็ไม่ได้ทำให้มุมมองใดๆ แม้ว่าจะเป็น
โฟกัสได้ ในการโฟกัสมุมมอง มุมมองต้องใช้
<requestFocus />
แท็กหรือเรียกView.requestFocus()
ด้วยตนเอง - ทำเครื่องหมายมุมมองที่เลื่อนได้ที่กำหนดเองว่าโฟกัสได้โดยใช้ทั้ง
android:focusable="true"
และandroid:focusableInTouchMode="true"
- หากมีการรวมมุมมองที่เลื่อนได้หลังวันที่
Activity.onCreate()
ตัวอย่างเช่น ตัวอย่างเช่น รอให้คำขอเครือข่ายเสร็จสิ้นก่อนที่จะสร้าง UI ของคุณ เรียกrequestFocus()
หลังจากแนบไฟล์ - หากมุมมองที่เลื่อนได้ของคุณคือ
INVISIBLE
หรือGONE
โทรหาrequestFocus()
เมื่อคุณตั้งค่าเป็นVISIBLE
- หากกิจกรรมมีมุมมองที่เลื่อนได้หลายมุมมอง ให้เลือก 1 มุมมองที่ต้องการโฟกัสโดยใช้
<requestFocus />
แท็ก การเลื่อนแบบซ้อนไม่รองรับปุ่มด้านข้างแบบหมุน - หาก UI ของคุณมีมุมมองอื่นที่โฟกัสเมื่อผู้ใช้
จะโต้ตอบกับแท็กนั้น เช่น
InputText
ช่วยให้ผู้ใช้มีวิธีคืนค่าโฟกัสกลับไปเป็นมุมมองที่เลื่อนได้ หากโฟกัสหายไปจากการฟังการแตะบนมุมมองที่เลื่อนได้และการโทรrequestFocus()
ในการตอบกลับ
ลักษณะการหมุนเวียนที่กำหนดเอง
หากมุมมองที่เลื่อนได้ของคุณไม่สนับสนุนการเลื่อนการป้อนข้อมูลด้วยการหมุนโดยค่าเริ่มต้น หรือหากคุณต้องการ ใช้การใส่ข้อมูลด้วยปุ่มหมุนสำหรับสิ่งอื่นที่ไม่ใช่การเลื่อน เช่น ซูมเข้าและออก หรือหมุนแป้นหมุน - คุณสามารถจัดการเหตุการณ์การเลื่อน ตัวคุณเอง อย่าลืมตรวจสอบว่าได้มุมมองที่ชัดเจนขึ้น ไม่เช่นนั้น กิจกรรมนั้นจะไม่ผ่านมาได้
ข้อมูลโค้ดต่อไปนี้แสดงวิธีใช้ MotionEvent
InputDeviceCompat
,
และ ViewConfigurationCompat
เพื่อเพิ่มการเลื่อนที่กำหนดเองลงในมุมมองของคุณ ให้ทำดังนี้
Kotlin
myView.setOnGenericMotionListener { v, ev -> if (ev.action == MotionEvent.ACTION_SCROLL && ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER) ) { // Don't forget the negation here val delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) * ViewConfigurationCompat.getScaledVerticalScrollFactor( ViewConfiguration.get(context), context ) // Swap these axes to scroll horizontally instead v.scrollBy(0, delta.roundToInt()) true } else { false } }
Java
myView.setOnGenericMotionListener(new View.OnGenericMotionListener() { @Override public boolean onGenericMotion(View v, MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_SCROLL && ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER) ) { // Don't forget the negation here float delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) * ViewConfigurationCompat.getScaledVerticalScrollFactor( ViewConfiguration.get(context), context ); // Swap these axes to scroll horizontally instead v.scrollBy(0, Math.round(delta)); return true; } return false; } });
ทดสอบโดยใช้โปรแกรมจำลอง
ใช้โปรแกรมจำลอง Android เพื่อจำลองการป้อนข้อมูลด้วยปุ่มหมุน บนอุปกรณ์ Wear เปิดแอป Wear ในโปรแกรมจำลองเพื่อเรียกใช้ โปรเจ็กต์ของคุณหรือลาก ไฟล์ APK ลงในโปรแกรมจำลองเพื่อติดตั้ง
หากต้องการทดสอบการใส่ข้อมูลด้วยปุ่มหมุนในโปรแกรมจำลอง ให้ทำดังนี้
- จากเครื่องมือจัดการ SDK ให้ใช้แท็บเครื่องมือ SDK เพื่อ รับ Android Emulator 26.0.3 ขึ้นไป
- ใน Android Studio เลือกเครื่องมือ > Android > AVD Manager สร้างอุปกรณ์ Wear ใหม่ด้วย API 25 หรือ สูงขึ้น
- เรียกใช้โปรแกรมจำลองจาก Android Studio
- คลิกเมนูรายการเพิ่มเติม 3 จุดที่ด้านล่างของแถบเครื่องมือโปรแกรมจำลอง คลิก แท็บการป้อนข้อมูลด้วยปุ่มหมุนในหน้าต่างใหม่เพื่อเปิดอินเทอร์เฟซการใส่ข้อมูลด้วยปุ่มหมุนและลองใช้ปุ่มหมุน การเลื่อนอินพุต
วิดีโอต่อไปนี้แสดงการใส่ข้อมูลด้วยปุ่มหมุนในตัวจำลอง