เอกสารนี้อธิบายหลักการของการตอบสนองแบบรู้สึกได้ในอุปกรณ์ Android โดยครอบคลุมกรณีการใช้งาน การจัดประเภทเอฟเฟกต์การสัมผัส (ชัดเจน สมบูรณ์ และ สั่น) และหลักเกณฑ์การออกแบบที่สำคัญสำหรับนักพัฒนาแอป keywords_public: > การโต้ตอบการสัมผัส การสั่น การตอบสนอง Android UI การออกแบบประสบการณ์ของผู้ใช้ (UX) การออกแบบ หลักการ หลักเกณฑ์ HapticFeedbackConstants
เมื่อพูดถึงการตอบสนองแบบรู้สึกได้ในอุปกรณ์เคลื่อนที่ ยิ่งน้อยยิ่งดี การสั่นมากเกินไปอาจสร้างความรำคาญและทำให้มือชาได้ เนื่องจากผู้ใช้มักจะถืออุปกรณ์ไว้ในมือและจดจ่ออยู่กับอุปกรณ์ นอกจากนี้ ยังอาจรบกวน งานที่ผู้ใช้ตั้งใจจะทำ ซึ่งอาจทำให้ผู้ใช้ปิดการโต้ตอบการสัมผัส ทั้งหมดอย่างรวดเร็ว อย่างไรก็ตาม การสั่นที่ออกแบบมาอย่างดีจะให้การตอบสนองทางประสาทสัมผัสที่มีประโยชน์ ซึ่งช่วยให้ผู้ใช้มีส่วนร่วมกับอุปกรณ์ได้ดียิ่งขึ้น
หน้านี้อธิบาย Use Case สำหรับการใช้การโต้ตอบการสัมผัส แนะนำการจัดประเภทสำหรับเอฟเฟกต์การสั่น และยังครอบคลุมหลักเกณฑ์พื้นฐานสำหรับแอปด้วย
กรณีการใช้งานสำหรับการเพิ่มการสั่นในแอป
เหตุผลบางประการที่ควรนำการโต้ตอบการสัมผัสมาใช้ในแอปมีดังนี้
เพื่อแจ้งให้ผู้ใช้ทราบถึงเหตุการณ์ที่ต้องดำเนินการ ตัวอย่างเช่น สายเรียกเข้าหรือข้อความ หรือการประชุมที่กำลังจะเกิดขึ้นใน ปฏิทิน
เพื่อยืนยันการเปลี่ยนแปลงสถานะในอุปกรณ์หลังจากที่ผู้ใช้ดำเนินการ ตัวอย่างเช่น ความคิดเห็นเกี่ยวกับการคลิกเมื่อกดปุ่ม การปลดล็อกโทรศัพท์ การยอมรับหรือปฏิเสธลายนิ้วมือ หรือการเปิดใช้งานกล้อง
เพื่อสร้างความพึงพอใจให้ผู้ใช้ด้วยเอฟเฟกต์ เอฟเฟกต์ดังกล่าวอาจช่วยปรับปรุงการดำเนินการของผู้ใช้ที่กำลังดำเนินอยู่ หรือจำลองการโต้ตอบทางกายภาพ ตัวอย่างเช่น การเลื่อน การตอบสนอง แถบเลื่อนที่เลื่อนเข้าที่ หรือเอฟเฟกต์การสั่นที่ซิงค์กับ ภาพเคลื่อนไหว เสียง วิดีโอ และเกม
การจัดประเภทการโต้ตอบการสัมผัส
หลักการโต้ตอบการสัมผัสที่นำเสนอที่นี่ได้รับการออกแบบโดยอิงตามการโต้ตอบการสัมผัสที่ชัดเจน การโต้ตอบการสัมผัสที่เข้มข้น และการโต้ตอบการสัมผัสที่สั่นสะเทือน
ล้างการโต้ตอบการสัมผัส
การโต้ตอบการสัมผัสที่ชัดเจนหมายถึงความรู้สึกที่คมชัดและสะอาดซึ่งเชื่อมโยงกับเหตุการณ์ที่แยกจากกัน เช่น การกดปุ่ม โดยเอฟเฟกต์เหล่านี้มักมีจุดประสงค์เพื่อเลียนแบบการทำงานทางกลไกในโลกจริงที่สอดคล้องกัน เช่น การกดปุ่มจริง
Android มีเอฟเฟกต์การสั่นที่ชัดเจนซึ่งกำหนดไว้ล่วงหน้าใน VibrationEffect อย่างไรก็ตาม โดยทั่วไปแล้ว แอปควรใช้ค่าคงที่ที่มุ่งเน้นการดำเนินการจาก
HapticFeedbackConstants เพื่อให้มั่นใจถึงความสอดคล้องของผลลัพธ์และการดำเนินการในอุปกรณ์
ข้อดีอีกอย่างของค่าคงที่ที่มุ่งเน้นการดำเนินการคือแพลตฟอร์มสามารถ ให้ลักษณะการทำงานสำรองได้หากอุปกรณ์ของผู้ใช้ไม่รองรับเอฟเฟกต์ที่ซับซ้อนกว่า
เมื่อคุณขยาย Use Case ของการตอบสนองแบบสัมผัส การตอบสนองแบบสัมผัสที่ชัดเจนที่มีอยู่อาจดูเรียบง่ายและน่าเบื่อในบางครั้ง ในกรณีนี้ ให้ตั้งเป้าหมายไปที่การสั่นที่สมบูรณ์ ซึ่งแสดงอารมณ์ได้มากกว่า
การโต้ตอบการสัมผัสที่สมบูรณ์
โดยทั่วไปแล้ว การสั่นที่สมบูรณ์ต้องใช้ตัวกระตุ้นการสั่นที่มีแบนด์วิดท์ความถี่กว้างกว่า ซึ่งช่วยให้แสดงออกและมีช่วงการสั่นได้มากขึ้น นอกจากนี้ คุณยังสร้างการโต้ตอบการสัมผัสที่ซับซ้อนได้ด้วยการจัดลำดับองค์ประกอบพื้นฐานของการโต้ตอบการสัมผัสที่ชัดเจนในแอมพลิจูดและ ช่วงเวลาที่แตกต่างกัน
ตัวอย่างเอฟเฟกต์การสั่นที่สมบูรณ์มีดังนี้
- ความรู้สึก "กระพือ" คล้ายกับผีเสื้อกระพือปีกบน ปลายนิ้ว
- พื้นผิวที่นิ้วรู้สึกได้เมื่อลากหรือปัดผ่าน
- ความรู้สึกสั่นคลอนและไม่มั่นคง หรือความหนักแน่นและก้องกังวาน
การโต้ตอบการสัมผัสแบบสั่น
การสั่นแบบ Buzz จะมีลักษณะเป็นการสั่นที่ดัง คมชัด และแทรกซึม ซึ่งทิ้งผลลัพธ์ไว้ เช่น ความรู้สึกซ่าๆ แม้ว่าการสั่นจะสิ้นสุดลงแล้ว นอกจากนี้ ยังมีแนวโน้มที่จะมีเอฟเฟกต์เสียงก้องที่ให้ความรู้สึกเหมือนเสียงก้อง ก่อนที่การสั่นจะหยุดลงโดยสมบูรณ์
ตัวอย่างการสั่นที่น่าสนใจ ได้แก่
- ใช้สว่านเจาะหิน
- การขี่มอเตอร์ไซค์
- ในอุปกรณ์เคลื่อนที่ การสั่นแบบยาวๆ ที่ดังขึ้นหลังจากการกดปุ่ม
ย้อนกลับไปในยุคเพจเจอร์และฟีเจอร์โฟน โทรศัพท์มือถือระดับล่างที่มี ตัวกระตุ้นหรือไดรเวอร์แบบสัมผัสที่มีประสิทธิภาพต่ำมักจะสร้างการสั่นที่ยาวและมีเสียง เพื่อวัตถุประสงค์ในการแจ้งเตือน
หลักเกณฑ์การออกแบบการโต้ตอบการสัมผัส
โดยสรุปแล้ว หลักเกณฑ์การออกแบบในระดับสูงมีดังนี้
- เลือกใช้การโต้ตอบการสัมผัสที่ชัดเจนและมีคุณภาพแทนการโต้ตอบการสัมผัสที่สั่นสะเทือน
- รักษาความสอดคล้องกันทั้งในระบบและการออกแบบแอป
- คำนึงถึงความถี่ในการใช้งานและความสำคัญ
ให้ความสำคัญกับค่าคงที่และเอฟเฟกต์การสั่นที่กำหนดไว้ล่วงหน้า
หากการดำเนินการของคุณครอบคลุมการดำเนินการที่กำหนดไว้ล่วงหน้าซึ่งมีอยู่ใน
HapticFeedbackConstants ให้ใช้ค่าคงที่นั้น ซึ่งจะช่วยให้ผู้ใช้ได้รับประสบการณ์การโต้ตอบของผู้ใช้ที่สม่ำเสมอ ซึ่งมีประโยชน์อย่างยิ่งในแง่ของการพิจารณาการช่วยเหลือพิเศษ
หากคุณสร้างเอฟเฟกต์ของตัวเอง ให้พิจารณาใช้VibrationEffect
เอฟเฟกต์ที่กำหนดไว้ล่วงหน้าและองค์ประกอบพื้นฐาน VibrationEffect.Composition โดยมีแนวโน้มที่จะมอบประสบการณ์การใช้งานที่มีคุณภาพสม่ำเสมอในอุปกรณ์ต่างๆ ที่รองรับ
เชื่อมโยงความสําคัญและความถี่ของเหตุการณ์กับความแรง
เอฟเฟกต์การสั่นไม่ควรรบกวนผู้ใช้หรือดูไม่จำเป็น
เอฟเฟกต์การสั่นที่ใช้กับเหตุการณ์ที่เกิดขึ้นบ่อยมาก เช่น การเลื่อนหรือการย้ายแฮนเดิลข้อความ ควรมีความละเอียดอ่อนมากเพื่อให้ประสบการณ์โดยรวมเป็นที่น่าพอใจ
เหตุการณ์ที่สําคัญกว่า เช่น การรีเฟรชหน้าเว็บหรือการส่งแบบฟอร์ม ควร มีความแข็งแกร่งกว่าการเปลี่ยนปุ่มเปิด/ปิดหรือการเลื่อนในรายการ เป็นต้น
รวมทั้ง 2 แนวคิดเพื่อสร้างเอฟเฟกต์ที่แข็งแกร่งขึ้นเมื่อ การโต้ตอบถึงเป้าหมาย เช่น ค่อยๆ เพิ่มแอมพลิจูด ของลำดับการทำเครื่องหมายด้วยการลาก วาง หรือสแนป
มีความสม่ำเสมอ
ใช้การตอบสนองแบบสัมผัสอย่างสม่ำเสมอภายในแอป หากการโต้ตอบหนึ่งๆ เช่น การส่งแบบฟอร์มหรือการนำทางในแอป มีการตอบสนองแบบสั่น ให้ตรวจสอบว่ามีการใช้เอฟเฟกต์เดียวกันกับการโต้ตอบที่คล้ายกันทั้งหมด ซึ่งจะช่วยให้ผู้ใช้เชื่อมโยงความหมายกับการตอบสนองแบบรู้สึกได้ที่เฉพาะเจาะจงได้
นอกจากนี้ ให้ใช้ HapticFeedbackConstants เดียวกันกับระบบ Android เพื่อการโต้ตอบที่กำหนดไว้อย่างชัดเจน เช่น ตัวเลือกเวลาหรือแป้นพิมพ์เสมือน
ออกแบบประสบการณ์การมองเห็นและเสียงด้วยการโต้ตอบการสัมผัส
พิจารณาการโต้ตอบการสัมผัสเป็นส่วนหนึ่งของประสบการณ์ของผู้ใช้โดยรวม
เราขอแนะนำอย่างยิ่งให้ร่วมออกแบบเอฟเฟกต์ภาพ เสียง และการสัมผัส ทำให้ สอดคล้องกับภาพเคลื่อนไหวและรูปแบบเสียง อินพุตภาพและเสียงจะช่วยเพิ่มการรับรู้การโต้ตอบการสัมผัสได้ และเอฟเฟกต์การโต้ตอบการสัมผัสที่ออกแบบมาอย่างดีจะช่วยให้เอฟเฟกต์ภาพและเสียงมีความรู้สึกสมจริง
ในทางกลับกัน การตอบสนองแบบรู้สึกได้ที่เล่นไม่ซิงค์กันหรือรู้สึกไม่สอดคล้องกับเอฟเฟกต์ภาพและเสียงอาจทำให้ผู้ใช้รู้สึกไม่สบายใจ ในบางกรณี ผู้ใช้อาจคิดว่าตัวกระตุ้นแบบสัมผัสเสีย
หลีกเลี่ยงการสั่นแบบครั้งเดียวรุ่นเดิมสำหรับการตอบสนองแบบรู้สึกได้
หลีกเลี่ยงการใช้การสั่นแบบครั้งเดียวรุ่นเดิม เช่น การสั่นที่กำหนดโดย VibrationEffect.createOneShot หรือการสั่นที่ดำเนินการด้วย API Vibrator.vibrate(long) และ Vibrator.vibrate(long[], int)
การสั่นเหล่านี้อาจรู้สึกเหมือนเสียงหึ่งๆ เมื่อสั่นเป็นเวลานานหลังจากที่รูปคลื่นอินพุตสิ้นสุดลง โดยเฉพาะในอุปกรณ์ที่มีตัวกระตุ้นหรือไดรเวอร์แบบสัมผัสที่มีประสิทธิภาพต่ำ
สัญญาณการตอบสนองแบบสัมผัสที่ดีเมื่อกดปุ่มควรมีระยะเวลา 10-20 มิลลิวินาที อย่างไรก็ตาม แอคทูเอเตอร์อาจส่งเสียงต่อไปอีก 20-50 มิลลิวินาทีหลังจากที่อินพุต 20 มิลลิวินาทีไปยังแอคทูเอเตอร์สิ้นสุดลง ดังนั้น จึงควรหลีกเลี่ยงการสั่นแบบครั้งเดียวสำหรับการตอบกลับประเภทนี้