java - 对 Android 中的触觉反馈感到困惑

标签 java android kotlin android-vibration haptic-feedback

我有一个带有 9 个按钮的 Android 应用程序。此应用程序在 2.36 上运行,并且是设备上唯一的应用程序(或者至少是我们让用户使用的唯一应用程序 - 我们在交付设备时预装了我们的代码,作为我们销售的工业产品套件的一部分。)

所有按钮都转到同一个处理程序并按它们的标签在那里分类。处理程序在 XML 中指定:

   <Button android:id="@+id/IdleButton"
     android:layout_marginLeft="5dp"
     android:background="@drawable/idle18pt_he_normal"
     android:hapticFeedbackEnabled="true"
     android:layout_width="92dp"
     android:layout_height="92dp"
     android:tag="0"
     android:onClick="theButtonHandler">
   </Button> 

我想在用户按下按钮时启用触觉反馈,即振动。有没有办法在 XML 中做到这一点,或者如果没有,有没有办法在我的 onClick() 处理程序中做到这一点?

我在 Android 上看到的用于触觉反馈的 Web 示例(例如 http://androidcookbook.com/Recipe.seam?recipeId=1242)似乎主要涉及对 list 的更改、对 XML 的更改(您可以看到我已经在上面的 XML 中启用了它)然后为按钮声明、初始化和实现单独的 Touch 处理程序。这似乎需要做很多工作,尤其是因为我有 9 个按钮。

由于我的所有按钮都只有一个 onClick 处理程序,有没有一种方法可以在那里实现触觉反馈?

当我点击我的一个按钮时,我所要做的就是在手机设置的“声音”部分中选中“声音选择”——根本不需要编码。为什么触觉反馈要复杂得多?

最佳答案

不使用 VIBRATE允许。

您可以使用 performHapticFeedback()任何View的功能包括Button .

例如,在 Kotlin 中以编程方式:

view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)

这会使设备振动。

您可以在 Fragment 中的任何位置振动设备或 Activity ,即使您没有 View可用的。

在 fragment 中,您可以执行以下操作:
requireView().performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)

在 Activity 中,您可以:
window.decorView.rootView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)

关于java - 对 Android 中的触觉反馈感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25748230/

相关文章:

java - 将对象添加到 ArrayList 中不会出现错误

java - Android 设备监视器打不开

java - 如何修复 android.os.FileUriExposedException : file:///storage/emulated/0/Documents/SM. pdf 通过 Intent.getData() 暴露在应用程序之外

android - onPreviewFrame 和异常锁定表面

java - 如何在 Kotlin 中初始化一个线程?

Kotlin/ native : How to convert cArrayPointer to Array

Java 文件从 CMD 设置调试点并使用 CMD 运行它

java - 如何在 Java 中设置 unix 动态库路径(LD_LIBRARY_PATH)?

Android - 以表格形式显示来自 sqlite 的所有数据

android - 如何制作一串不易碎的空格?