หลักการออกแบบการโต้ตอบการสัมผัส

เอกสารนี้อธิบายหลักการของการตอบสนองแบบรู้สึกได้ในอุปกรณ์ 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 มิลลิวินาทีไปยังแอคทูเอเตอร์สิ้นสุดลง ดังนั้น จึงควรหลีกเลี่ยงการสั่นแบบครั้งเดียวสำหรับการตอบกลับประเภทนี้