当用户恰好点击 5 次时获取触摸事件

Getting touch event when the user taps exactly 5 times

我想在用户在 activity 中的任意位置点击 5 次时显示一个对话框(秘密菜单)。这有可能吗?我没能做到这一点,也没有在文档中找到任何内容。

尝试此代码:覆盖 activity 中的 onTouchEvent(MotionEvent event) 方法并计算点击次数..

public class MainActivity extends Activity {

private int count = 0;

//detect any touch event in the screen

@Override
public boolean onTouchEvent(MotionEvent event) {  

    int eventaction = event.getAction();
     if (eventaction == MotionEvent.ACTION_UP) {

     //get system current milliseconds
     long time= System.currentTimeMillis();
     ++count;

     if (count==5) {
        //show Dialog
        new AlertDialog.Builder(MainActivity.this)
              .setTitle("Your Alert")
              .setMessage("Your Message")
              .setCancelable(false)
              .setPositiveButton("ok", new OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
                      // Whatever...
                  }
              }).show();

     }
     return true;    
    }
    return false;
  }

}

首先初始化全局变量mCounter,它跟踪你点击了多少次activity。

int mCounter = 0;

您可以像下面那样在 activity

中覆盖 onTouchEvent 方法
@Override
    public boolean onTouchEvent(MotionEvent event) {

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // increase counter here
                counter = counter + 1;
                if(counter == 5) {
                  // show dialog here
               }
                break;


        }
        return true;
    }
}

希望这些对你有帮助。

这很简单。代码将像这样:

public class MainActivity extends Activity {

private int count = 0;

public boolean onTouchEvent(MotionEvent event) {  

int eventaction = event.getAction();
if (eventaction == MotionEvent.ACTION_UP) {
count++;
}
else{
break;
}
if (count==5) {
    //do whatever you need
Toast.makeText(getActivity(), "You tapped 5 times on screen",
Toast.LENGTH_LONG).show();
 }
 return true;    
}
return false;
}

供您参考

是的,您可以覆盖 onTouchEvent(MotionEvent event)

但是

User get the secret menu whenever he complete the 5 touches.

But for a real Secret Menu,When ever the user touches 5 times Quickly the dialogue shows up.

为此

public class MainActivity extends Activity {

private final int count = 0;
Handler handler;
Runnable runnable;


@Override
public boolean onTouchEvent(MotionEvent event) {

    int eventaction = event.getAction();
    if (eventaction == MotionEvent.ACTION_UP) {

        count++;
        if (count > 0) {
            handler = new Handler();
            runnable = new Runnable() {
                @Override
                public void run() {
                    count = 0;
                }
            };
            handler.postDelayed(runnable, 1000);  // clear counter if user does not touch for one sec
        }
        if (count == 5) {
            //do whatever

        }
        return true;
    }
    return false;
}

}

如果用户暂时没有触摸,则使计数器为 0。

Be careful to import right handler

import android.os.Handler;