กรณีการใช้งานขั้นพื้นฐานที่สุดสำหรับการโต้ตอบการสัมผัสก็คือการแสดงความคิดเห็นแก่ผู้ใช้ การโต้ตอบ เครื่องมือเลือกเวลา การกดแป้นบนแป้นพิมพ์เสมือน และข้อความ เป็นตัวอย่างโดยทั่วไปของกรณีการใช้งานที่ดีสำหรับการตอบสนองแบบรู้สึกได้ สำหรับข้อมูลเพิ่มเติม ข้อมูลเกี่ยวกับเวลาและวิธีในการใช้การโต้ตอบการสัมผัสได้ โปรดอ่าน หลักการออกแบบการสัมผัส
หน้านี้จะอธิบายถึง 3 วิธีในการให้การตอบสนองแบบรู้สึกได้
- ใช้
View
(แนะนำ) วิธีนี้เน้นที่การดำเนินการ มีการรองรับในวงกว้างที่สุดและไม่ต้องใช้สิทธิ์VIBRATE
- ใช้
VibrationEffect
ที่กำหนดไว้ล่วงหน้า วิธีนี้มีความยืดหยุ่นมากกว่า แต่ก็มีข้อดีและข้อเสียบางอย่าง - ใช้การเรียบเรียงขั้นสูงกับประเภทพื้นฐาน ช่วงเวลานี้ วิธีการนั้นใหม่กว่าและยืดหยุ่นกว่า แต่ต้องใช้อุปกรณ์เฉพาะ การสนับสนุน
วิธีการเหล่านี้ใช้หลักการพื้นฐานที่กำหนดในระดับอุปกรณ์เพื่อให้คุณภาพสูง ความคิดเห็นที่ปรับแต่งให้เหมาะกับอุปกรณ์ที่มีอยู่ในมือ
วิธีการตอบสนองแบบรู้สึกได้ทั้งหมดจะดำเนินการตามการตั้งค่าการตอบสนองการแตะของผู้ใช้ตามการตั้งค่าต่อไปนี้ "ค่าเริ่มต้น"
ใช้คอมโพเนนต์ View
เพื่อสร้างการตอบสนองแบบรู้สึกได้
ใช้เมธอด View.performHapticFeedback
เพื่อสร้างการตอบสนองแบบรู้สึกได้
ค่าคงที่แบบรู้สึกได้ที่กำหนดโดย HapticFeedbackConstants
จะโฟกัสที่
ฟังก์ชันการทำงานในแอปพลิเคชัน ไม่ใช่ประเภทของเอฟเฟกต์แบบรู้สึกได้ที่ทำ
การติดตั้งใช้งานที่เกี่ยวข้องอาจแตกต่างกันไปตามอุปกรณ์และฮาร์ดแวร์ แต่แอปจำเป็นต้องพิจารณาเฉพาะประเภทของความคิดเห็นที่จะมอบให้ ในบริบทที่เฉพาะเจาะจง การโฟกัสไปที่ฟังก์ชันการทำงานช่วยให้คุณเปิดใช้การโต้ตอบการสัมผัสได้ ความคิดเห็นสำหรับการโต้ตอบที่คล้ายกัน ผู้ใช้เรียนรู้วิธีเชื่อมโยงความหมายที่แตกต่างกัน การตอบสนองการสัมผัสที่แตกต่างกันเมื่อเวลาผ่านไป
สิ่งที่ต้องมีก่อน: เปิดใช้การตอบสนองแบบรู้สึกได้
ตราบใดที่แสดง View
อยู่ คุณจะใช้การตอบสนองแบบรู้สึกได้กับเหตุการณ์
บางเหตุการณ์ เช่น การกดค้าง จะมีการโต้ตอบการสัมผัสเริ่มต้นซึ่งจะเกิดขึ้นเมื่อ
Listener ในมุมมองจะจัดการเหตุการณ์ (แสดงผล true
)
View
ของ Android ปิดใช้การตอบสนองแบบรู้สึกได้ได้โดยตั้งค่า
View.hapticFeedbackEnabled
ไปที่ false
การปิดใช้พร็อพเพอร์ตี้นี้
ผลลัพธ์ในความคิดเห็นเริ่มต้น
นอกจากนี้เมธอด performHapticFeedback
จะยังเป็นไปตามการตั้งค่าระบบ
HAPTIC_FEEDBACK_ENABLED
ซึ่งอนุญาตให้ผู้ใช้ปิดใช้
สำหรับทั้งระบบ
วิธีนี้ต่างจาก API แบบรู้สึกได้อื่นๆ ตรงที่ใช้ HapticFeedbackConstants
กับ View
ไม่ต้องใช้สิทธิ์ VIBRATE
เลือกHapticFeedbackConstant
คุณไม่จำเป็นต้องใช้คอมโพเนนต์ View
กับ HapticFeedbackConstants
เพื่อประเมินการสนับสนุนอุปกรณ์ที่เฉพาะเจาะจง เนื่องจากค่าคงที่เหล่านี้มีค่าสำรอง
ในกรณีที่จำเป็น สิ่งเดียวที่ต้องพิจารณาคือระดับ SDK ที่ต้องการ
คงที่
ตัวอย่างที่ 1: การกดแป้นพิมพ์
นี่คือตัวอย่างวิธีเพิ่มการตอบสนองแบบรู้สึกได้ไปยังการป้อนข้อมูลด้วยการสัมผัสใน View
โดยใช้ Listener แบบสัมผัส เอฟเฟกต์นี้จำลองความรู้สึกเมื่อกดกด
แล้วปล่อย
Kotlin
class HapticTouchListener : View.OnTouchListener { override fun onTouch(View view, MotionEvent event) : Boolean { when (event.actionMasked) { MotionEvent.ACTION_DOWN -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) MotionEvent.ACTION_UP -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE) } return true } }
Java
class HapticTouchListener implements View.OnTouchListener { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); break; case MotionEvent.ACTION_UP: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE); break; } return true; } }
ตัวอย่างที่ 2: ปุ่มส่ง
กรณีการใช้งานการตอบสนองแบบรู้สึกได้ไม่ใช่แค่การจำลองการโต้ตอบทางร่างกายกับ
อุปกรณ์ หรืออาจใช้เพื่อสื่อความหมายเชิงนามธรรมด้วย ตัวอย่างเช่น
ความคาดหวังทั่วไปสำหรับ
เอฟเฟกต์ CONFIRM
คือ
การสั่นสั้นๆ และเบาขณะ
REJECT
อาจเป็น
ให้ฟีดแบ็กมากกว่า เพื่อส่งสัญญาณแจ้งว่าล้มเหลว ซึ่งจะแสดงให้เห็นใน
ตัวอย่างความคิดเห็นเกี่ยวกับปุ่มส่ง
Kotlin
submitButton.setOnClickListener { view -> val successful = performSubmit() if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM) } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT) } }
Java
submitButton.setOnClickListener(view -> { boolean successful = performSubmit(); if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM); } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT); } });
ใช้ VibrationEffect
ที่กำหนดไว้ล่วงหน้าเพื่อสร้างการตอบสนองแบบรู้สึกได้
การใช้แนวทางที่อิงตาม View
จะมุ่งเน้นที่การโต้ตอบของผู้ใช้ ใช่เลย
เพื่อให้สอดคล้องกันทั่วทั้งระบบ อย่างไรก็ตาม ข้อกำหนดที่กำหนดไว้ล่วงหน้า
นอกจากนี้ยังเรียกใช้ API ของ VibrationEffect
เพื่อขอการตอบสนองแบบรู้สึกได้ที่กำหนดเองได้ด้วย
เอฟเฟกต์
เอฟเฟกต์ที่กำหนดไว้ล่วงหน้าพร้อมให้ใช้งานในรูปแบบ VibrationEffect
ค่าคงที่ และสามารถ
ตรวจหาการสนับสนุนและเล่นกับบริการ Vibrator
ดังที่แสดงใน
ดังตัวอย่างต่อไปนี้
ทำความเข้าใจการรองรับอุปกรณ์ของ API ของ VibrationEffect
ในการใช้งานขั้นพื้นฐาน ไม่จำเป็นต้องตรวจสอบการสนับสนุนจากบุคคล
VibrationEffect
API API เช่น Vibrator.areEffectsSupported
และ Vibrator.areAllEffectsSupported
จะใช้เพื่อระบุว่าอุปกรณ์มี
การใช้ค่าคงที่ที่กำหนดเอง หากเอฟเฟกต์ที่กำหนดเองไม่ปรับแต่ง
อยู่ แอปของคุณจะยังเล่นเอฟเฟกต์และใช้รูปแบบที่แพลตฟอร์มกำหนดได้
การใช้งานสำรอง
ดูรายละเอียดเพิ่มเติมได้ที่ กำหนดไว้ล่วงหน้า
VibrationEffect
สิ่งที่ต้องมีก่อน: โหลดไวเบรเตอร์และสิทธิ์เข้าถึงVIBRATE
การสั่นส่วนใหญ่สามารถเล่นด้วยบริการ Vibrator
ซึ่งโหลดได้
ดังนี้
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
แอปต้องมี
VIBRATE
ในคำสั่งซื้อ
เพื่อสั่นอุปกรณ์โดยใช้บริการนี้ สามารถเพิ่มสิทธิ์ลงใน
ไฟล์ Manifest ของแอปพลิเคชัน:
<uses-permission android:name="android.permission.VIBRATE"/>
เปิดVibrationEffect
ที่กำหนดไว้ล่วงหน้า
เตรียมเอฟเฟกต์ที่กำหนดไว้ล่วงหน้าได้โดยใช้ VibrationEffect.createPredefined
จากนั้น เล่นโดยใช้วิธีใดวิธีหนึ่งจาก vibrate
บน Vibrator
ตัวอย่างนี้เล่นเอฟเฟกต์การคลิก
Kotlin
val vibrator = context.getSystemService(Vibrator::class.java) ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
Java
Vibrator vibrator = context.getSystemService(Vibrator.class); ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
ใช้การเรียบเรียงขั้นสูงกับ (Primitives)
VibrationEffect.Composition
API มีความสามารถเพิ่มเติมสำหรับ
การตอบสนองแบบรู้สึกได้ อย่างไรก็ตาม ต่างจากเอฟเฟ็กต์ตรงที่ค่าดั้งเดิมเหล่านี้ไม่มี
วิดีโอสำรองระดับระบบ ซึ่งหมายความว่าคุณต้องใส่ใจเป็นพิเศษ
ค่าพื้นฐานและความสามารถอื่นๆ ที่อุปกรณ์รองรับ
เราจะกล่าวถึงการใช้ API เหล่านี้โดยละเอียดยิ่งขึ้นใน การสร้างเอฟเฟกต์ Haptic ที่กำหนดเอง