2011-12-09 11 views
0

リスナを使用して画面からすべてのモーションイベントをキャプチャしたいと思います。たとえば、画面を上下にスワイプした場合、移動してタッチアップ。このタッチは複数のビューのリニアビューの例であるため、ボタンとテキストフィールドはタッチリスナーにすべてのビューにアタッチしようとしましたが、悪いデータが得られるなど、タッチダウンなしでタッチアップするなどです。これを達成する方法を助言してください。リスナー/リスナーを使用してすべてのモーションイベントをキャプチャする方法

+0

ビューでタッチが開始されたとき。あなたが指を離すまで、Androidは同じビューに送信し続けます。 –

答えて

3

を、あなたがそれをやりたい転送し、それらを消費することができ

たとえば、あなたの質問で言及したように、複数のビュー(線形表示、ボタン、およびテキストフィールド)を持つRelativeLayout。次のようにすることができます。

RelativeLayout currentView = (RelativeLayout) findViewById(R.id.MyRelativeLayout); 
currentView.addView(aSubView); 
currentView.addView(aSubButton); 
currentView.addView(aSubTextView); 

currentView.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // Here you will receive all the motion event. 
     return false; 
    } 
}); 
+0

を使用したいと思いますが、これは線形レイアウトとgridlayoutでも機能しますか? –

+1

はい、そうです。それが問題を解決した場合は、回答を受け入れたものとしてマークしてください。ありがとう。 – jobesu14

+0

私はこれを試してみました。 ...他のビューは既に子であるため、それらを再度追加することができます。さらに、子供がついた状態でのみリスナーをルートに接続すると、すべてのモーションイベントがキャプチャされません –

0

アクティビティでdispatchTouchEvent(MotionEvent ev)メソッドを上書きできます。

これは、MotionEventがさまざまなアクティビティビューに転送される前に呼び出されます。すべてのビューのあなたはその後、これを処理するための良い方法は、親のViewGroup(レイアウト)にOnTouchListenerを添付することです...

+0

リスナーを使用して、 –

関連する問題