textview中的ontouchlisteners

时间:2011-02-28 04:53:36

标签: android

之前我已经为textviews添加了一个ontouch监听器,每次触摸都会进行自定义振动。

然而,当我按住textview时,它会继续播放自定义振动。

我如何设置它以便每次触摸它只会振动一次即使我持有textview

我试过onclick和其他一些听众,但它没有做我想要的...因为我需要textview在触摸时进行振动,因为它们从1 textview到另一个

public boolean onTouch(View v, MotionEvent event)
{
    vibratePattern();
    return true;
}
private void vibratePattern()
{
    Vibrator vibrator;
    vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    int dot = 100;
    int dash = 250;
    int short_gap = 200;
    int medium_gap = 500;
    int long_gap = 1000;
    long[] pattern101 = {
        0,
        dot, short_gap, dash, short_gap, dot,
        long_gap
    };

    vibrator.vibrate(pattern101, -1);
}

1 个答案:

答案 0 :(得分:0)

这可能是您的vibratePattern方法中的某些内容,但如果您检查了对该事件的正确操作,这应该只能运行一次并振动:

if (event.getAction() == ACTION_DOWN) {
    Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
    vibrator.vibrate(100);
}

<强>更新

如果这不适用于多个视图,那么您可以将相同的侦听器附加到所有视图,并检查v引用何时更改:

if (previousView != v) {
    vibratePattern();
    previousView = v;
}
return true;