双击 android 上的功能按钮
Twice press button for functionality on android
我想在 android 上实现按钮。该按钮有两个功能,单按 toast 消息,如果用户在毫秒内立即按下按钮两次,则会显示警告对话框,如果延迟按下,则会显示 toast 消息。
请告诉我如何执行这些功能 android 按钮。
在你的activity onCreate 声明之前
private long lastclicked = 0;
然后设置OnClickListener
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//1000 replace your time in ms
if (SystemClock.elapsedRealtime() - lastclicked < 1000){
return;
}
lastclicked = SystemClock.elapsedRealtime();
//perform here your task
}
}
试试这个,
在 onCreate 之前创建一个布尔值
private boolean pressedOnce = false;
在 onClickListener 中使用一秒钟的处理程序
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (pressedOnce) {
// show the alert dialog
}
pressedOnce = true;
Toast.makeText(MainActivity.this, "Clicked once!", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
pressedOnce=false;
}
}, 1000);
}
});
你可以使用 customButton 和 implements GestureDetector ,然后你可以覆盖 onSingleTapConfirmed 和 onDoubleTap funciton
上述解决方案的替代方法是使用 Android 提供的 GestureDetector
,它允许您在其他手势中检测双击。
首先你需要一个简单的嵌套 class 来处理你的双击:
private class DoubleTapListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
// Handle your double tap here.
return true;
}
}
GestureDetector
的默认侦听器接口允许您侦听许多不同的触摸事件。 SimpleOnGestureListener
提供了每个方法的空实现,因此您可以只实现您感兴趣的方法。
接下来您需要创建 GestureDetector
。您可以在 Activity
的 onCreate
中执行此操作。
DoubleTapListener doubleTapListener = new DoubleTapListener();
GestureDetector gestureDetector = new GestureDetector(this, doubleTapListener);
gestureDetector.setOnDoubleTapListener(doubleTapListener);
不幸的是,您需要传递 doubleTapListener
两次 - 第一次传递为 OnGestureListener
以提供我们不感兴趣的方法的所有空实现。 this
代表Context
.
最后一部分是将您的 onTouchEvent 路由到我们的 GestureDetector
。
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return gestureDetector.onTouchEvent(motionEvent);
}
});
此解决方案需要的代码略多,但另一方面,您依赖于标准 Android 的方法来检测双击,而不是创建您自己的方法。
我想在 android 上实现按钮。该按钮有两个功能,单按 toast 消息,如果用户在毫秒内立即按下按钮两次,则会显示警告对话框,如果延迟按下,则会显示 toast 消息。 请告诉我如何执行这些功能 android 按钮。
在你的activity onCreate 声明之前
private long lastclicked = 0;
然后设置OnClickListener
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//1000 replace your time in ms
if (SystemClock.elapsedRealtime() - lastclicked < 1000){
return;
}
lastclicked = SystemClock.elapsedRealtime();
//perform here your task
}
}
试试这个,
在 onCreate 之前创建一个布尔值
private boolean pressedOnce = false;
在 onClickListener 中使用一秒钟的处理程序
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (pressedOnce) {
// show the alert dialog
}
pressedOnce = true;
Toast.makeText(MainActivity.this, "Clicked once!", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
pressedOnce=false;
}
}, 1000);
}
});
你可以使用 customButton 和 implements GestureDetector ,然后你可以覆盖 onSingleTapConfirmed 和 onDoubleTap funciton
上述解决方案的替代方法是使用 Android 提供的 GestureDetector
,它允许您在其他手势中检测双击。
首先你需要一个简单的嵌套 class 来处理你的双击:
private class DoubleTapListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
// Handle your double tap here.
return true;
}
}
GestureDetector
的默认侦听器接口允许您侦听许多不同的触摸事件。 SimpleOnGestureListener
提供了每个方法的空实现,因此您可以只实现您感兴趣的方法。
接下来您需要创建 GestureDetector
。您可以在 Activity
的 onCreate
中执行此操作。
DoubleTapListener doubleTapListener = new DoubleTapListener();
GestureDetector gestureDetector = new GestureDetector(this, doubleTapListener);
gestureDetector.setOnDoubleTapListener(doubleTapListener);
不幸的是,您需要传递 doubleTapListener
两次 - 第一次传递为 OnGestureListener
以提供我们不感兴趣的方法的所有空实现。 this
代表Context
.
最后一部分是将您的 onTouchEvent 路由到我们的 GestureDetector
。
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return gestureDetector.onTouchEvent(motionEvent);
}
});
此解决方案需要的代码略多,但另一方面,您依赖于标准 Android 的方法来检测双击,而不是创建您自己的方法。