یکی از اساسی ترین موارد استفاده برای لمسی، ارائه بازخورد به تعاملات کاربر است. انتخابگر زمان، فشار دادن کلید روی صفحه کلید مجازی و انتخاب متن نمونههای رایجی از موارد استفاده خوب برای بازخورد لمسی هستند. برای اطلاعات بیشتر در مورد زمان و نحوه استفاده از هاپتیک، اصول طراحی Haptics را بخوانید.
در این صفحه سه راه برای ارائه بازخورد لمسی توضیح داده شده است.
- از یک
View
(توصیه می شود) استفاده کنید. این رویکرد عمل محور است، گسترده ترین پشتیبانی را دارد و به مجوزVIBRATE
نیاز ندارد. - از یک
VibrationEffect
از پیش تعریف شده استفاده کنید . این رویکرد انعطاف پذیری بیشتری دارد، اما با برخی معاوضه ها. - از ترکیبات پیشرفته با مواد اولیه استفاده کنید . این روش جدیدتر و حتی انعطاف پذیرتر است، اما نیاز به پشتیبانی دستگاه خاصی دارد.
این روش ها از ابتدایی های تعریف شده در سطح دستگاه استفاده می کنند تا بازخورد با کیفیت بالا متناسب با دستگاه در دست ارائه دهند.
همه روش های بازخورد لمسی به طور پیش فرض به تنظیمات بازخورد لمسی کاربر احترام می گذارند.
از کامپوننت های View
برای ایجاد بازخورد لمسی استفاده کنید
برای تولید بازخورد لمسی از روش View.performHapticFeedback
استفاده کنید. ثابت های لمسی تعریف شده توسط HapticFeedbackConstants
بر روی عملکرد خود در یک برنامه متمرکز هستند، نه نوع اثر لمسی انجام شده.
اجرای اساسی ممکن است بسته به دستگاه و قابلیتهای سختافزار متفاوت باشد، اما برنامه فقط باید نوع بازخوردی را که در یک زمینه خاص ارائه میکند در نظر بگیرد. با تمرکز بر عملکرد، می توانید بازخورد لمسی را برای تعاملات مشابه فعال کنید. کاربران یاد می گیرند که در طول زمان معانی مختلف را با احساسات لمسی مختلف مرتبط کنند.
پیش نیازها: بازخورد لمسی را فعال کنید
تا زمانی که View
قابل مشاهده باشد، می توان از بازخورد لمسی برای رویدادهای آن استفاده کرد. برخی رویدادها، مانند فشار طولانی، لمسی پیشفرض دارند که اگر شنونده در نمای رویداد را مدیریت کند فعال میشوند ( true
برمیگرداند).
یک View
Android میتواند بازخورد لمسی را با تنظیم ویژگی View.hapticFeedbackEnabled
روی false
غیرفعال کند. غیرفعال کردن این ویژگی منجر به بازخورد پیشفرض میشود.
روش performHapticFeedback
همچنین به تنظیمات سیستم HAPTIC_FEEDBACK_ENABLED
احترام میگذارد که به کاربر اجازه میدهد به طور بالقوه آنها را برای کل سیستم غیرفعال کند.
برخلاف سایر APIهای لمسی، استفاده از HapticFeedbackConstants
با View
به مجوز VIBRATE
نیاز ندارد.
یک HapticFeedbackConstant
را انتخاب کنید
هنگام استفاده از کامپوننتهای View
با HapticFeedbackConstants
، نیازی به ارزیابی پشتیبانی دستگاه خاصی نیست، زیرا این ثابتها در صورت لزوم رفتار بازگشتی خواهند داشت. تنها مورد توجه، سطح SDK ثابت مورد نظر است.
مثال 1: فشار دادن کلید
این نمونه ای از نحوه افزودن بازخورد لمسی به ورودی لمسی در View
با استفاده از شنوندگان لمسی است. افکت ها احساس فشار دادن یک دکمه و سپس رها کردن آن را شبیه سازی می کنند.
کاتلین
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 } }
جاوا
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
ممکن است بازخورد قوی تری برای خرابی سیگنال باشد. این در مثال زیر برای بازخورد دکمه ارسال نشان داده شده است.
کاتلین
submitButton.setOnClickListener { view -> val successful = performSubmit() if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM) } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT) } }
جاوا
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
را درک کنید
در استفاده اولیه، نیازی به بررسی پشتیبانی از API های VibrationEffect
فردی نیست. APIهایی مانند Vibrator.areEffectsSupported
و Vibrator.areAllEffectsSupported
برای تعیین اینکه آیا دستگاه دارای یک پیاده سازی سفارشی شده از ثابت است یا خیر استفاده می شود. اگر یک جلوه سفارشی وجود نداشته باشد، برنامه شما همچنان میتواند افکتها را پخش کند و از پیادهسازی بازگشتی تعریفشده توسط پلتفرم استفاده کند.
برای جزئیات بیشتر، به VibrationEffect
از پیش تعریف شده مراجعه کنید.
پیش نیاز: بارگیری ویبراتور و مجوز VIBRATE
اکثر ارتعاشات را می توان با سرویس Vibrator
پخش کرد که به صورت زیر قابل بارگیری است:
کاتلین
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
جاوا
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
برای لرزاندن دستگاه با استفاده از این سرویس، برنامه باید مجوز VIBRATE
را داشته باشد. مجوز را می توان به فایل مانیفست برنامه اضافه کرد:
<uses-permission android:name="android.permission.VIBRATE"/>
یک VibrationEffect
از پیش تعریف شده را پخش کنید
افکت های از پیش تعریف شده را می توان با استفاده از VibrationEffect.createPredefined
آماده کرد، سپس با استفاده از یکی از روش های vibrate
در Vibrator
پخش شد.
این مثال افکت کلیک را پخش می کند.
کاتلین
val vibrator = context.getSystemService(Vibrator::class.java) ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
جاوا
Vibrator vibrator = context.getSystemService(Vibrator.class); ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
از ترکیبات پیشرفته با بدوی استفاده کنید
VibrationEffect.Composition
API امکانات بیشتری برای بازخورد لمسی ارائه می دهد. با این حال، بر خلاف افکتها، این نسخههای اولیه دارای بازگردانی در سطح سیستم نیستند، به این معنی که باید توجه دقیقی به ویژگیهای اولیه و سایر قابلیتهای پشتیبانی شده توسط دستگاه شود.
استفاده از این APIها با جزئیات بیشتری در ایجاد جلوه های لمسی سفارشی مورد بحث قرار گرفته است.