您可能想考虑不使用双BelpAP。这不是Android的正常行为。
当我第一次开始在Android系统上编程时,我不断遇到在Android系统上真的“很难”做的事情。随着时间的推移,我发现其中许多很难,因为它们是一个非常糟糕的主意。
如果你正在移植一个iOS应用程序,或者模拟一个iOS应用程序的行为,你可能想考虑将UI转换成Android风格的行为,并使用长按或其他“Android”的手势。
下面是一个类似的问题和答案:
Android系统:如何检测双击?
这很简单,只是覆盖。
OnClickListener的方法
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();
}
用法
button.setOnClickListener(new DoubleClickListener() {
@Override
public void onDoubleClick() {
Log.i("onClick", "double");
}
@Override
public void onSingleClick() {
Log.i("onClick", "single");
}
});
您可能需要创建一个延迟变量,该变量将区分单击和双击。
看到这个代码,
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;
}
问题内容: 我在论坛上搜索并看到以下代码: 但是代码运行不正确(有时会打印出“并且单击一次!” 2次。应该打印出“并且双击!”)。有人可以告诉我为什么吗?还是可以给我一些更好的方法呢?谢谢! 问题答案: 有时它会打印出“并且只需单击一次!” 2次 。它应该打印出“,这是双击!”)。 那是正常的。仅当您在指定的时间间隔内单击两次时,才会发生双击。因此,有时如果单击速度不够快,您将连续获得两次单击。
问题内容: 我有一个简单的代码,单击链接即可打开一个新窗口。但是在执行脚本时,单击相当于双击同一元素,并打开2个窗口。 我正在使用InternetExplorer驱动程序 问题答案: 当你一起工作 , 用 ,您可以考虑通过传递以下配置属性 类别: :由于InternetExplorerDriver仅适用于Windows,因此它尝试使用所谓的“本机”或OS级事件在浏览器中执行鼠标和键盘操作。这与对相
问题内容: 有人能想到一种忽略Java双击附带的单击的好方法吗? 我希望每种行为都有不同的行为,例如: 单击可在点击点上绘制十字准线 双击选择屏幕上的对象,但应该 不是 搽点击点十字线 …有人能想到一种方法吗?某种计时器设置可能是?一个想法赞赏:-) <免责声明> …而且是的,我知道我正在犯一个最令人发指的可用性/ UI伪装。 问题答案: 实际上,您需要在MouseAdapter的重写mouseC
我有:我在水平滚动视图中有一组按钮 我想要的:我想要在双击按钮时检测事件 注意通常我处理点击事件使用.但是现在我怎么能实现同样的双击。如果有任何界面我也可以用于此目的,这将是有帮助的
问题内容: 我正在使用Scrapy爬行网页。单击某些按钮时,仅会弹出一些我需要的信息(当然,单击后也会显示在HTML代码中)。 我发现Scrapy可以处理的形式(如登录)如图所示这里。但是问题在于没有表格可以填写,所以这不是我所需要的。 如何简单地单击一个按钮,然后显示我需要的信息? 我是否必须使用诸如机械化或lxml之类的外部库? 问题答案: Scrapy无法解释javascript。 如果你绝
我正在尝试在Selenium中测试图像按钮点击。 图像是事件,当我点击sgt消息出现我 超文本标记语言代码: