How can I detect tap on the screen?
More specific where do I attach OnGestureListener
so that
onSingleTapUp
everywhere on the screen,
even if an ImageView
take up half the screen.
Now I have the Listener on the Activity that has an ImageView.
But the Listener only fire when I click outside the ImageView.I read and try to understand this but cannot get it right.
this code is in the Activity.
public boolean onSingleTapUp(MotionEvent e) {
//addtext.setText("-" + "SINGLE TAP UP" + "-");
//Log.d(TAG, "- + SINGLE TAP UP + - ***********************************************************************");
int btnsize = buttonSave.getHeight();
int viewWidth = display.getWidth();
int viewHeight = display.getHeight();
// RIGHT SIDE SCREEN
if(e.getX()> (viewWidth*0.7)){
Log.d(TAG, "RIGHT SIDE");
if(e.getY()> viewHeight*0.7){
Log.d(TAG, "right down on screen");
}else if(e.getY()> (viewHeight*0.45)){
Log.d(TAG, "right middle on screen ");
}
}
// LEFT SIDE SCREEN
if(e.getX()< (viewWidth*0.3)){
Log.d(TAG, "LEFT SIDE");
if(e.getY()> viewHeight*0.7){
Log.d(TAG, "Left middle on screen ");
}else if(e.getY()> (viewHeight*0.45)){
Log.d(TAG, "Left down on screen ");
}
}
return true;
}
Detect Screen Tap
I'm answering this for those who just need a simple way to detect a tap on the screen:
Add an
android:onClick
value to your base/root layout (LinearLayout, RelativeLayout, etc.). You can call it anything you want, I'm naming itscreenTapped
as an example:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:onClick="screenTapped">
Add this method to your
Activity
using the same name you specified foronClick
:public void screenTapped(View view) { // Your code here }
Now, tapping on the screen will call the method above.
I'm answering my own question. Thanks to the above @Jason. I have registered onTouchEvent
to all views.
It works great.
精彩评论