当用户恰好点击 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;
我想在用户在 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;