我们如何在 android 中增加按钮长按监听器的时间?

how can we increase button long click listener time in android?

我想在同一个按钮上执行简单的点击监听器和长按监听器。但是我需要在延迟 5 秒后执行长按监听器 在 longclicklistener 中,在按住 1 秒后执行。因此使用处理程序,它将在 5 seocnds.but 后执行,我需要准确按下按钮 5 秒,然后执行代码 ...

无法更改 onLongClick 事件的计时器,它由 android 自己管理。

可以使用 .setOnTouchListener()。

然后在MotionEvent 为ACTION_DOWN 时注册。 注意变量中的当前时间。 然后当一个带有 ACTION_UP 的 MotionEvent 被注册并且 current_time - actionDown 时间 > 5000 ms 然后做一些事情。

差不多:

Button button = new Button();
long then = 0;
    button.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN){
                then = (Long) System.currentTimeMillis();
            }
            else if(event.getAction() == MotionEvent.ACTION_UP){
                if(((Long) System.currentTimeMillis() - then) > 5000){
                    // 5 second of long click
                    return true;
                }
            }
            return false;
        }
    })

你可以这样使用Handler

Button b=findViewById(R.id.btn);

    final Runnable run = new Runnable() {

        @Override
        public void run() {
            Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_SHORT).show();
            // Your code to run on long click

        }
    };
    final Handler handel = new Handler();
    b.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
            switch (arg1.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    handel.postDelayed(run, 5000/* OR the amount of time you want */);
                    break;

                default:
                    handel.removeCallbacks(run);
                    break;

            }
            return true;
        }
    });