【问题标题】:ontouchlisteners in textviews文本视图中的 ontouchlistener
【发布时间】:2011-02-28 15:57:05
【问题描述】:

之前我已经为 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);
}

【问题讨论】:

  • 能否请您展示您的vibratePattern 方法?
  • 编辑了我的 qn 以显示振动模式

标签: android


【解决方案1】:

这可能是您的 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;

【讨论】:

  • 嗯,如果你触摸一次,我的会振动一次。但我要求用户将手指从 1 个文本视图移动到另一个文本视图。因此,当我触摸并按住第一个 textview 时,vibratepattern 将被重复调用(我只需要调用一次)
  • @benjamin 我认为您应该在活动中查看action。请查看我的答案更新。我不确定如果您点击一个视图并将手指拖动到另一个视图,Android 会在第二个视图上调用 action=down 事件。
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多