Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中禁用onclick的按钮上执行长时间单击事件?_Android - Fatal编程技术网

如何在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;

    }


}