現在、ボタンにOnTouchListenerがあり、正常に動作します。コードは以下の通りである:アクティビティのOnTouchListener
Button button1 =(Button) findViewById(R.id.btOk1);
button1.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
//do some stuff here
return false;
}
});
ユーザーが私の活動の任意の領域をタップするたびに、私はいくつかのものを行うように私は、代わりに私の全体の活動にOnTouchListenerを持つことを望みます。私のアクティビティのルートレイアウトはTableLayoutです。これはどうすればいいですか?
ありがとうございます!
編集:
私は私のルートレイアウトを命名し、次のように使用するonTouchListenerを設定することにより、それを行うために管理:
View view = findViewById(R.id.mylayout);
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Log.d(TAG, "onTouch");
if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0) {
Log.d(TAG, "Obscured");
if (event.getAction() == MotionEvent.ACTION_UP) {
new AlertDialog.Builder(MyActivity.this)
.setTitle("Alert!")
.setMessage("Overlay detected!")
.setNeutralButton("Dismiss", null)
.show();
}
// Return true to prevent the button from processing the touch.
return true;
} else {
Log.d(TAG, "Not obscured");
}
return false;
}
});
私は上のほぼ任意の場所をクリックするたびに、私は今、タッチイベントを取得していますレイアウト。私は、MotionEventのフラグをFLAG_WINDOW_IS_OBSCUREDと比較することで、タッチされた領域が実際に隠れている場合にのみ、アクティビティにタッチイベントを渡すオーバーレイを検出することもできます。また、ButtonやEditTextなどのUI要素ではonTouchListenerが呼び出されるようには見えませんが、空白の領域でのみ呼び出されます。
アクティビティの一部が隠されているかどうかを検出する方法はありますか?各UI要素ごとに別々のものを用意するのではなく、アクティビティ全体に対して単一のonTouchListener()を使用する方法はありますか?
ありがとうございました。これはうまくいきましたが、ルートレイアウトにidを付ける必要がありました。もう1つの質問 - アクティビティが他のUI要素によって隠されているかどうかを調べる方法はありますか?トースト通知またはシステムアラート?私はMotionEvent.FLAG_WINDOW_IS_OBSCUREDでevent.getFlags()をテストしようとしましたが、これは隠蔽されている画面の領域でしか機能しないように見えます。 – user1118764
コードを貼り付けることができますか?私はあなたを取得していません。 –
元の投稿を修正しました。 – user1118764