2

視覚障害者向けのAndroidアプリケーションを作成しており、ボタンのメニューを使用しています。ユーザーが画面上で指をスライドさせると、アプリケーションはボタンのキャプションを読み取ります。これは、onTouchイベントを使用して実行されます。ユーザーがボタンをクリックすると、音声フィードバックを伴うアクション(アクティビティの変更またはその他のアクション)が発生します。これは、onClickイベントを使用して実行されます。

問題は、ボタンをクリックすると両方のイベント(onTouchとonClick)が発生し、TTSがonTouchメッセージの読み取りを開始し、0.5秒後に停止し、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;
    }
}

次に、 GestureDetectorgestureDetectorを作成します。
オブジェクトと。

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

次に、ontouchイベントに登録します。

view.setOnTouchListener(this);

このようにonTouchメソッドをオーバーライドします。

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

ここで、onSingaltpとDoubleTapに関するいくつかのタスクを実行します。

于 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 に答える