2012-12-25 81 views
1

我正在爲視力受損的人創建一個Android應用程序,並使用按鈕菜單。 當用戶在屏幕上滑動手指時,應用程序將讀取按鈕的標題。這是使用onTouch事件完成的。當用戶點擊一個按鈕時,會發生一個動作(改變活動或任何其他動作),並伴有語音反饋。這是使用onClick事件完成的。使用onClick時禁用onTouch

問題是,當單擊按鈕時,兩個事件都會觸發(onTouch和onClick),並且TTS開始讀取onTouch消息,在半秒後停止並啓動在onClick事件中聲明的新消息。如何在調用onClick時禁用onTouch的觸發。我瞭解問題,因爲onTouch總是在onClick之前,但我不知道解決方案。

謝謝

+0

最接受的答案 –

回答

1

答案很簡單親愛避免click事件套用點擊事件。

我也面臨同樣的問題,所以我知道如何解決這個問題。

只需使用此代碼。

首先創建手勢類。

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;
對象和。

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和雙擊的任務。

+0

但我不使用雙擊。我使用ontouch在屏幕上移動並接收有關屏幕上顯示內容的音頻反饋,並點擊以激活屏幕上顯示的元素。 – CaptainNemo

+0

@ me1982使用sin-gal絲錐。 –

0
public final OnTouchListener mOnTouchListener = new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent rawEvent) { 
     return false; 
    } 
}; 

對象.setOnTouchListener(null);

+1

我不明白這是如何回答我的問題。這隻會禁用onTouch,而我需要這兩者。 – CaptainNemo