如何在Android中禁用onclick的按钮上执行长时间单击事件?
考虑一个活动,其中一个名为扫描的按钮在蓝牙设备连接后立即被禁用,以防止进一步扫描如何在Android中禁用onclick的按钮上执行长时间单击事件?,android,Android,考虑一个活动,其中一个名为扫描的按钮在蓝牙设备连接后立即被禁用,以防止进一步扫描 mScan.setEnabled(false); 但一旦连接,我需要相同的按钮mScan显示一些对话框,当它长按时,有额外的功能 问题是我禁用了mScan按钮,无法执行onLongClick功能 我怎样才能达到同样的效果 寻求您的帮助。您可以使用自定义OnTouchListener: 然后,您可以根据持续时间控制要执行的操作,它也可以与OnClickListener一起工作。不要扩展,实现人员无法理解。因为我刚
mScan.setEnabled(false);
但一旦连接,我需要相同的按钮mScan显示一些对话框,当它长按时,有额外的功能
问题是我禁用了mScan按钮,无法执行onLongClick功能
我怎样才能达到同样的效果
寻求您的帮助。您可以使用自定义OnTouchListener:
然后,您可以根据持续时间控制要执行的操作,它也可以与OnClickListener一起工作。不要扩展,实现人员无法理解。因为我刚刚接触这个功能。你有什么例子吗?lastDown参数应该是什么?lastDown和lastDuration是类变量。OnTouchListener允许您管理许多类型的事件,例如当您将手指放在屏幕上时,然后当您释放它时。因此,它提供了比onclick侦听器更多的可能性。您可以做的是保存用户放置手指时的当前时间,并与用户释放手指时的时间不同。然后根据你的时间长短,你可以自由地做你想做的事。这可以与OnClickListener和OnLongClickListener协同工作。我提供了一个基本的例子,里面没有流程,但是你可以找到一些这样的例子
long lastDown;
long lastDuration;
public class YourOnTouchListener implements View.OnTouchListener
{
public YourOnTouchListener(some parameters) {
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
lastDuration = System.currentTimeMillis() - lastDown;
if (lastDuration > the duration you want) {
//do what you want here
return true;
}
return false;
}
}