2

我正在为视障人士创建一个 Android 应用程序,并且正在使用按钮菜单。当用户在屏幕上滑动手指时,应用程序会读取按钮的标题。这是使用 onTouch 事件完成的。当用户单击按钮时,会发生一个动作(更改活动或任何其他动作),并伴有语音反馈。这是使用 onClick 事件完成的。

问题是,当单击一个按钮时,两个事件都会触发(onTouch 和 onClick)并且 TTS 开始读取 onTouch 消息,半秒后停止并启动在 onClick 事件中声明的新消息。如何在调用 onClick 时禁用 onTouch 的触发。我理解这个问题,因为 onTouch 总是先于 onClick,但我不知道解决方案。

谢谢

4

2 回答 2

1

简单的回答亲爱的避免点击事件应用点击事件。

我也面临同样的问题,所以我知道如何解决这个问题。

只需使用此代码。

首先创建手势类。

class MyGestureDetector extends SimpleOnGestureListener 
{
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
    {
        return false;
    }
    @Override
    public boolean onDoubleTap(MotionEvent e) 
    {
        return true;
    }
    @Override
    public boolean onSingleTapUp(MotionEvent e) 
    {
        return true;
    }
}

然后创建 GestureDetector 手势检测器;
对象和。

gestureDetector=new GestureDetector(myContext, new MyGestureDetector());

然后注册触摸事件。

view.setOnTouchListener(this);

像这样覆盖 onTouch 方法。

@Override
    public boolean onTouch(View view, MotionEvent event) 
    {
        Button b=(Button) view;
        gestureDetector.onTouchEvent(event);
        return true;
    }

在这里做一些关于 onSingal tp 和 Double Tap 的任务。

于 2012-12-25T13:00:18.273 回答
0
   public final OnTouchListener mOnTouchListener = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent rawEvent) {
        return false;
    }
}; 

或者

目的.setOnTouchListener(null);

于 2012-12-25T12:51:35.503 回答