مؤسسة UX للإطار اللمسي

جميع تحسينات إطار عمل Android المبنية على اللمسات مدفوعة بمجموعة من مبادئ UX التي تتطور بمعدل متساو. تتضمن المبادئ الحالية استبدال الاهتزازات الصاخبة بمسامات واضحة ، واستكشاف اللمسات الغنية .

مبادئ UX

الشكل 1. المبادئ الحالية

واجهات برمجة التطبيقات بالسنة

الشكل 2. واجهات برمجة التطبيقات اللمسية حسب السنة

اهتزاز صاخب

بالعودة إلى أجهزة الاستدعاء والهواتف المميزة ، تم استخدام الاهتزازات القائمة على صفارة ERM منخفضة الجودة ولكن الموفرة للطاقة كبديل للرنين السمعي في الوضع الصامت . يمكن لمكونات الأجهزة القديمة التي تنتج أصواتًا مسموعة عالية وغير سارة أن تضر بتجربة المستخدم اللمسية من خلال تقديم انطباعات منخفضة الجودة (على سبيل المثال ، هاتف مكسور رخيص الثمن).

مسح اللمسات

تدعم اللمسات الواضحة الإحساس بتغيرات الحالة المنفصلة (على سبيل المثال ، التغييرات الثنائية أثناء عملية التشغيل / الإيقاف). نظرًا لطبيعة العرض المنفصل ، يتم إنشاء اللمسات الواضحة ككيان واحد (على سبيل المثال ، تأثير لمسي واحد لكل حدث إدخال واحد).

يهدف Android إلى تقديم لمسات واضحة مع أحاسيس قوية ولكن حادة بدلاً من الأحاسيس الصاخبة أو الطرية.

تتضمن الثوابت اللمسية المحددة مسبقًا والتي تم إنشاؤها لدعم اللمسات الواضحة ما يلي.

في HapticFeedbackConstants :

  • CLOCK_TICK
  • CONFIRM
  • CONTEXT_CLICK
  • GESTURE_END
  • GESTURE_START
  • KEYBOARD_PRESS
  • KEYBOARD_RELEASE
  • KEYBOARD_TAP
  • LONG_PRESS
  • REJECT
  • TEXT_HANDLE_MOVE
  • VIRTUAL_KEY
  • VIRTUAL_KEY_RELEASE

VibrationEffect :

  • EFFECT_CLICK
  • EFFECT_DOUBLE_CLICK
  • EFFECT_HEAVY_CLICK
  • EFFECT_TICK

يُعد بناء معرفة مشتركة بين الشركات المصنعة للأجهزة والمطورين أمرًا أساسيًا لرفع الجودة الشاملة لملمس اللمس في نظام Android البيئي. استخدم قائمة التحقق الأساسية ، وتقييم الأجهزة ، و CDD . لمعرفة المزيد حول التنفيذ اللمسي.

اضغط وحرر

الشكل 3. الضغط والإفراج عن.

لمسة غنية

اللمسات الغنية هي فئة لمسية متنامية تتجاوز التأثيرات القائمة على الاندفاع الفردي. يهدف Android إلى دعم اللمسات الغنية مع قابلية عالية للتركيب وإمكانية الضبط بمستوى دقيق من الدقة. حالات الاستخدام التالية مدعومة في Android 11 أو الإصدارات الأقدم.

اللمسات الغنية

الشكل 4. ملامسات غنية بنسيج منزلق

السحب والضرب

الشكل 5. السحب والضرب

حالة الاستخدام 1: انزلاق الملمس

إذا تكرر التأثير اللمسي بينما ينزلق الإصبع على سطح اللمس (على سبيل المثال ، السحب ، الضرب ، استكشاف السطح بنسيج ملمس وهمي) ، يفضل أن تكون التأثيرات اللمسية المتكررة واضحة ودقيقة.

إذا كان التأثير الفردي صاخبًا وليس هشًا ، فمن المحتمل أن يتم القضاء على الفترات الفاصلة بين التكرارات. والنتيجة هي ضجة طويلة واحدة ، بدلاً من إشارات متعددة منفصلة.

إذا لم تكن السعة دقيقة بدرجة كافية ، فإن الطاقة اللمسية المتصورة تتراكم من خلال التكرار ، مما يؤدي إلى حالات لمسية قوية بشكل كبير في نهاية التكرار.

تنفيذ نسيج لمسي بسيط للسطح لإيماءات السحب والسحب

استخدم CLOCK_TICK و TEXT_HANDLE_MOVE في HapticFeedbackConstants . تحدد هذه الثوابت خصائص التكرار والسعة مسبقًا.

خلق التأثير الخاص بك

لإنشاء تأثير خاص بك ، قم بإنشاء تصميم عن طريق تجميع تسلسل PRIMITIVE_CLICK و PRIMITIVE_TICK في VibrationEffect.Composition . يمكنك ضبط خصائص مقياس التكرار والسعة باستخدام addPrimitive(int primitiveID, float scale, int delay) . يعتمد الدعم على قدرة CAP_COMPOSE_EFFECTS Vibrator HAL .

حالة الاستخدام 2: اهتزاز طويل مع تأثير سهل

الاهتزاز الطويل هو اهتزاز بسعة سلس ينتقل من 0 إلى السعة المستهدفة. يمكن للاهتزاز الطويل أن يولد لمسات انتباها يسهل إدراكها. ومع ذلك ، فإن الاهتزاز الطويل المفاجئ يمكن أن يفاجئ المستخدمين في بيئة هادئة ، وغالبًا ما ينتج عنه أصوات أزيز مسموعة. لتوليد اهتزاز طويل أكثر متعة ، قم بتطبيق تأثير السهولة في بداية الاهتزاز الطويل. ينتج عن ذلك انتقال سلس في السعة يتجه نحو السعة المستهدفة.

تطبيق تأثير السهولة

  1. تحقق من إمكانيات الأجهزة للتحكم في السعة باستخدام android.os.Vibrator.hasAmplitudeControl() .

    • يجب أن تكون النتيجة true لإنتاج تأثير سهل وبسعة متفاوتة.
  2. استخدم VibrationEffect . createWaveform(timings[], amplitudes[], int repeat) .

  3. اضبط سلسلة timings[] amplitudes[] لإنشاء منحنى سهولة الدخول ، كما هو موضح في الشكل 6.

اهتزاز طويل

الشكل 6. منحنى سهل الاهتزاز الطويل

حالة الاستخدام 3: لمسات مقترنة بالصوت

إن اللمسات الصوتية المقترنة هي أنماط لمسية مقترنة بإيقاع الصوت لجذب انتباه المستخدم.

اللمسات الصوتية المقترنة: الفوائد

لتنفيذ اللمسات الصوتية المقترنة ، اجمع بين اللمسات الواضحة والاهتزازات الطويلة. توفر الأحاسيس اللمسية القوية ولكن القصيرة من اللمسات الواضحة أنماطًا إيقاعية منفصلة. عندما يقترن بالمستويات العالية من المحفزات التي يوفرها الاهتزاز الطويل ، فإن هذا يقوم بعمل رائع لجذب انتباه المستخدم.

من المهم مراعاة أنماط الإحساس الإيقاعية. إذا لم يكن هناك إحساس بالإيقاع ، فإن المستخدم يدرك الأحاسيس اللمسية على أنها أزيز عشوائي ، ويميل إلى تجاهلها.

زوجان صوتيان

الشكل 7. مثال لمسات الزوجين الصوتية

لمسات مقترنة بالصوت: نصائح للتنفيذ

يتطلب تنفيذ اللمسات المقترنة بالصوت فهمًا أساسيًا لتشغيل المحتوى لكل من القنوات الصوتية والقنوات اللمسية. ضع الأمور التالية في الاعتبار.

  • استخدام MediaPlayer أو SoundPool الطبقات.

    • الأصول في شكل OGG مع مفتاح الفوقية خاص ( ANDROID_HAPTIC تليها عدد من القنوات لمسي) تشير إلى وجود بيانات اللمس والتشغيل مع MediaPlayer و SoundPool .
  • أشر إلى دعم اللمس وتشغيل الصوت في audio_policy_configuration.xml .

    • استخدم ملف تعريف الإخراج مع قناة AUDIO_CHANNEL_OUT_HAPTIC_A|B .
    • بالنسبة لدفق الإخراج مع القنوات اللمسية ، تذكر أن القنوات اللمسية يتم تقديمها كقنوات إضافية في البيانات.

    مثال

    إذا كان قناع القناة لدفق الإخراج يبدو كالتالي:

    AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A

    ثم يجب أن تبدو كل عينة كما يلي:

    AUDIO_LEFT_CHANNEL,AUDIO_RIGHT_CHANNEL,HAPTIC_CHANNEL_A

  • تغيير AudioAttributes.Builder( ).setHapticChannelsMuted(boolean muted)

    to false لتشغيل القناة اللمسية.

    • بشكل افتراضي ، يتم كتم صوت القنوات اللمسية ( true ).
    • تشمل حالات الاستخدام نغمات الرنين وأصوات واجهة المستخدم مع لمسات متزامنة وردود الفعل.
  • يجب أن يقوم Vibrator HAL بتنفيذ دعم التحكم الخارجي.

اللمس المزدوج الصوتي

الشكل 8. تنفيذ اللمسات الصوتية المقترنة