and*_*Dev 2 android button onclicklistener
在我的应用程序中,我有一个按钮.单击和双击按钮后将执行单独的操作.我怎样才能做到这一点?谢谢
您可能需要创建一个延迟变量,该变量将在单击和双击之间进行区分.
看到这段代码,
private static final long DOUBLE_PRESS_INTERVAL = 250; // in millis
private long lastPressTime;
private boolean mHasDoubleClicked = false;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// Get current time in nano seconds.
long pressTime = System.currentTimeMillis();
// If double click...
if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
Toast.makeText(getApplicationContext(), "Double Click Event", Toast.LENGTH_SHORT).show();
mHasDoubleClicked = true;
}
else { // If not double click....
mHasDoubleClicked = false;
Handler myHandler = new Handler() {
public void handleMessage(Message m) {
if (!mHasDoubleClicked) {
Toast.makeText(getApplicationContext(), "Single Click Event", Toast.LENGTH_SHORT).show();
}
}
};
Message m = new Message();
myHandler.sendMessageDelayed(m,DOUBLE_PRESS_INTERVAL);
}
// record the last time the menu button was pressed.
lastPressTime = pressTime;
return true;
}
Run Code Online (Sandbox Code Playgroud)
那么它很简单只是覆盖。
OnClickListener 的 onClick 方法
public abstract class DoubleClickListener implements View.OnClickListener {
private static final long DEFAULT_QUALIFICATION_SPAN = 200;
private boolean isSingleEvent;
private long doubleClickQualificationSpanInMillis;
private long timestampLastClick;
private Handler handler;
private Runnable runnable;
public DoubleClickListener() {
doubleClickQualificationSpanInMillis = DEFAULT_QUALIFICATION_SPAN;
timestampLastClick = 0;
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
if (isSingleEvent) {
onSingleClick();
}
}
};
}
@Override
public void onClick(View v) {
if((SystemClock.elapsedRealtime() - timestampLastClick) < doubleClickQualificationSpanInMillis) {
isSingleEvent = false;
handler.removeCallbacks(runnable);
onDoubleClick();
return;
}
isSingleEvent = true;
handler.postDelayed(runnable, DEFAULT_QUALIFICATION_SPAN);
timestampLastClick = SystemClock.elapsedRealtime();
}
public abstract void onDoubleClick();
public abstract void onSingleClick();
}
Run Code Online (Sandbox Code Playgroud)
用法
button.setOnClickListener(new DoubleClickListener() {
@Override
public void onDoubleClick() {
Log.i("onClick", "double");
}
@Override
public void onSingleClick() {
Log.i("onClick", "single");
}
});
Run Code Online (Sandbox Code Playgroud)
您可能要考虑不使用DoubleTap。这不是正常的Android行为。
当我第一次在Android上开始编程时,我遇到了在Android上确实很难做到的事情。随着时间的流逝,我发现其中许多都是困难的,因为它们是一个非常糟糕的主意。
如果要移植iOS应用程序或模拟iOS应用程序的行为,则可能需要考虑将UI转换为Android样式的行为,并使用longPress或其他“ androidy”手势。
这是一个类似的问答:
| 归档时间: |
|
| 查看次数: |
32771 次 |
| 最近记录: |