How can I detect tap on the screen?

我怕爱的太早我们不能终老 提交于 2019-12-06 21:25:50

问题


More specific where do I attach OnGestureListener so that
I can detect 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;
}

回答1:


Detect Screen Tap

I'm answering this for those who just need a simple way to detect a tap on the screen:

  1. Add an android:onClick value to your base/root layout (LinearLayout, RelativeLayout, etc.). You can call it anything you want, I'm naming it screenTapped 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">
    
  2. Add this method to your Activity using the same name you specified for onClick:

    public void screenTapped(View view) {
        // Your code here
    }
    

Now, tapping on the screen will call the method above.




回答2:


I'm answering my own question. Thanks to the above @Jason. I have registered onTouchEvent to all views.
It works great.



来源:https://stackoverflow.com/questions/6206207/how-can-i-detect-tap-on-the-screen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!