我想在android上实现按钮。该按钮有两个功能,单按至吐司消息,如果用户在毫秒内立即按两次按钮,则会显示警告对话框,如果延迟按下则会显示吐司消息。 请介绍一下如何执行android Button这些功能。
答案 0 :(得分:3)
在onCreate声明
之前的活动中private long lastclicked = 0;
然后是setOnClickListener
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
}
}
答案 1 :(得分:0)
试试这个,
在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);
}
});
答案 2 :(得分:0)
您可以使用customButton和实现GestureDetector ,然后您可以覆盖 onSingleTapConfirmed和onDoubleTap 功能
答案 3 :(得分:0)
上述解决方案的替代方案是使用Android提供的GestureDetector
,它允许您在其他手势中检测双击。
首先,您需要一个简单的嵌套类来处理双击:
private class DoubleTapListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
// Handle your double tap here.
return true;
}
}
GestureDetector
的默认侦听器界面允许您收听许多各种触摸事件。 SimpleOnGestureListener
提供了每个方法的空实现,因此您只能实现您感兴趣的方法。
接下来,您需要创建GestureDetector
。您可以在onCreate
的{{1}}中执行此操作。
Activity
不幸的是,您需要两次传递DoubleTapListener doubleTapListener = new DoubleTapListener();
GestureDetector gestureDetector = new GestureDetector(this, doubleTapListener);
gestureDetector.setOnDoubleTapListener(doubleTapListener);
- 第一次传递doubleTapListener
以提供我们不感兴趣的方法的所有空实现。 OnGestureListener
代表this
。
最后一部分是将onTouchEvent路由到我们的Context
。
GestureDetector
此解决方案需要更多代码,但另一方面,您依靠标准的Android方式来检测双击而不是创建自己的。