如何在按钮视图上启用触觉反馈

Ksh*_*wal 35 android vibration

我想在我的应用程序按钮中添加触觉反馈,并以编程方式控制它们以显示按钮状态(启用和禁用).默认触觉反馈设置器仅适用于长按.如何使其适用于简单的按钮点击.

有没有办法对触摸移动等事件进行触觉反馈?

FIG*_*742 87

Mayra的一个例子是,对于运行Haptic Feedback是使用此代码.

View view = findViewById(...)
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
Run Code Online (Sandbox Code Playgroud)

这行代码很容易包含在你的onclick动作中.这方面的好处是你不需要在AndroidManifest中设置权限(我不需要在SdkVersion"7"(2.1或2.3是7))

另外在我的代码中做笔记,这将仅在使用启用触觉反馈为全局时运行.请访问http://developer.android.com/reference/android/view/HapticFeedbackConstants.html一直使用它.

  • 在按钮xml中添加`android:hapticFeedbackEnabled ="true"`或在代码中使用`btn.setHapticFeedbackEnabled(true);` (13认同)

Rya*_*anM 55

这是一个答案,虽然它可能不是最好的实现:

import android.view.View;
import android.os.Vibrator;

public class Main extends Activity implements OnClickListener
{
    private View myView;
    private Vibrator myVib;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        myVib = (Vibrator) this.getSystemService(VIBRATOR_SERVICE);

        //myView can be any type of view, button, etc.
        myView = (View) this.findViewById(R.id.myView);
        myView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        myVib.vibrate(50);
        //add whatever you want after this
    }
}
Run Code Online (Sandbox Code Playgroud)

不要忘记,您还需要将"android.permission.VIBRATE"权限添加到程序的清单中.您可以通过将以下内容添加到"AndroidManifest.xml"文件中来执行此操作:

<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
Run Code Online (Sandbox Code Playgroud)

我希望有所帮助.


Che*_*mon 28

View有一个performHapticFeedback函数,它允许你随时执行它,即在OnClick监听器上.

  • 在我添加第二个标志“HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING”之前,它对我不起作用,就像下面 Hamid Vakilian 的答案一样。 (3认同)

Ham*_*ian 12

getWindow().getDecorView().performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
Run Code Online (Sandbox Code Playgroud)

您可以在活动中使用的直接方法。