يمكنك تنفيذ ميزة "الارتجاج اللمسي" في تطبيقات Android باستخدام مكوّنات View وواجهات برمجة التطبيقات VibrationEffect المحدّدة مسبقًا والتركيبات المستندة إلى المخطط الزمني باستخدام VibrationEffect.Builder. keywords_public: > تطوير تطبيقات Android، والارتجاج اللمسي، والارتجاج اللمسي، وواجهة المستخدم، وعناصر View، وVibrationEffect، وView.performHapticFeedback، وVibrator، والثوابت اللمسية
من أبسط حالات استخدام تقنية اللمس تقديم ملاحظات للمستخدم بشأن تفاعلاته. تُعدّ أدوات اختيار الوقت والضغط على مفتاح في لوحة مفاتيح افتراضية واختيار النص من الأمثلة الشائعة على حالات الاستخدام الجيدة لميزة "التجاوب الحسّي". للحصول على مزيد من المعلومات حول الحالات التي يجب فيها تطبيق ردود الفعل اللمسية وكيفية تطبيقها، يُرجى الاطّلاع على مبادئ تصميم ردود الفعل اللمسية.
توضّح هذه الصفحة ثلاث طرق لتقديم تجاوب حسّي.
- استخدام
View(يُنصح به) هذا الأسلوب موجّه نحو الإجراءات، ويتوافق مع أكبر عدد من الأجهزة، ولا يتطلّب إذنVIBRATE. - استخدام
VibrationEffectمحدّد مسبقًا تتسم هذه الطريقة بمزيد من المرونة، ولكنها تنطوي على بعض التنازلات. - استخدام تركيبات ثابتة في المخطط الزمني مع
VibrationEffect.Builderهذه الطريقة هي الأكثر مرونة، إذ تتيح لك ترتيب الإعدادات المسبقة والأغلفة وعناصر الاهتزاز الأخرى على طول المخطط الزمني مع توفير دعم تلقائي مدمج للرجوع إلى الإعدادات السابقة.
تستخدم هذه الطرق عناصر أساسية محدّدة على مستوى الجهاز لتقديم ملاحظات عالية الجودة ومخصّصة للجهاز المستخدَم.
تلتزم جميع طرق التجاوب الحسّي بإعدادات الملاحظات اللمسية التي يضبطها المستخدم تلقائيًا.
استخدام مكوّنات View لإنشاء تجاوب حسّي
استخدِم طريقة View.performHapticFeedback لإنشاء تجاوب حسّي. تركز الثوابت الحسية المحددة بواسطة HapticFeedbackConstants على وظائفها في التطبيق، وليس على نوع التأثير الحسي الذي يتم تنفيذه.
قد يختلف التنفيذ الأساسي حسب الجهاز وإمكانات الأجهزة، ولكن على التطبيق مراعاة نوع الملاحظات التي يجب تقديمها في سياق معيّن. من خلال التركيز على الوظيفة، يمكنك تفعيل الملاحظات اللمسية للتفاعلات المشابهة. يتعلّم المستخدمون ربط معانٍ مختلفة بأحاسيس لمسية مختلفة بمرور الوقت.
المتطلبات الأساسية: تفعيل التجاوب الحسّي
طالما أنّ View مرئي، يمكن استخدام التجاوب الحسّي لأحداثه.
تتضمّن بعض الأحداث، مثل النقر مع الاستمرار، تقنية لمس تلقائية يتم تشغيلها إذا كان هناك متتبِّع للأحداث في العرض يعالج الحدث (يعرض true).
يمكن لجهاز Android View إيقاف التجاوب الحسّي من خلال ضبط السمة View.hapticFeedbackEnabled على false. سيؤدي إيقاف هذه السمة إلى عرض الملاحظات التلقائية.
تتضمّن طريقة performHapticFeedback أيضًا إعداد النظام
HAPTIC_FEEDBACK_ENABLED، ما يسمح للمستخدم بإيقافها
على مستوى النظام بالكامل.
على عكس واجهات برمجة التطبيقات الأخرى الخاصة باللمس، لا يتطلّب استخدام HapticFeedbackConstants مع View
الحصول على إذن VIBRATE.
اختَر HapticFeedbackConstant
عند استخدام مكوّنات View مع HapticFeedbackConstants، لن تحتاج إلى تقييم مدى توافق الجهاز معها، لأنّ هذه الثوابت ستتضمّن سلوكًا احتياطيًا عند الضرورة. ويجب مراعاة مستوى حزمة SDK للثابت المطلوب فقط.
المثال 1: ضغطة مفتاح
في ما يلي مثال على كيفية إضافة تجاوب حسّي إلى الإدخال باللمس في View باستخدام متتبِّعات اللمس. تحاكي التأثيرات الشعور بالضغط على زر ثم رفعه.
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 على تفاعل المستخدم، لذا يُفضَّل استخدامه لتحقيق التناسق في جميع أنحاء النظام. ومع ذلك، يمكنك أيضًا استدعاء واجهات برمجة تطبيقات VibrationEffect محدّدة مسبقًا للحصول على تأثيرات مخصّصة للتجاوب الحسّي.
تتوفّر التأثيرات المحدّدة مسبقًا VibrationEffectكثوابت، ويمكن التحقّق من توفّرها وتشغيلها باستخدام خدمة Vibrator كما هو موضّح في الأمثلة التالية.
فهم توافُق الأجهزة مع واجهات برمجة التطبيقات VibrationEffect
في الاستخدام الأساسي، لن تحتاج إلى التحقّق من توفّر واجهات برمجة التطبيقات الفردية VibrationEffect. يتم استخدام واجهات برمجة التطبيقات، مثل 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 للاهتزاز
الجهاز باستخدام هذه الخدمة. يمكنك إضافة هذا الإذن إلى ملف بيان التطبيق:
<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));
استخدام VibrationEffect.Builder لإنشاء مقاطع موسيقية
بدءًا من الإصدار 16 من نظام التشغيل Android (الربع الرابع من 2026)، توفّر واجهة برمجة التطبيقات
VibrationEffect.Builder الطريقة الأكثر
مرونةً وتعبيرًا لإنشاء تجاوب حسّي مخصّص من خلال ترتيب
الإعدادات المُسبقة المنفصلة والأغلفة وعناصر الاهتزاز الأخرى على طول المخطط الزمني.
بالإضافة إلى ذلك، تتضمّن التصاميم التي تم إنشاؤها باستخدام VibrationEffect.Builder ميزة احتياطية تلقائية مدمجة في جميع عناصرها المتوافقة.
يمكنك الاطّلاع على تفاصيل أكثر حول إنشاء تأثيرات لمسية باستخدام VibrationEffect.Builder (وواجهة برمجة التطبيقات VibrationEffect.Composition) في مقالة إنشاء تأثيرات لمسية مخصّصة.