【问题标题】:Android long key press安卓长按键
【发布时间】:2014-03-09 12:02:42
【问题描述】:

我需要在 Android 中生成/触发一个按钮的长按键事件。

对重新评分有帮助吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    从Android 2.0开始,Activity包含方法

    public boolean onKeyLongPress(int keyCode, KeyEvent event)
    

    例如,长按后退按钮是:

    @Override
    public boolean onKeyLongPress(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) 
        {
            // do your stuff here
            return true;
        }
        return super.onKeyLongPress(keyCode, event);
    }
    

    看看this article。

    【讨论】:

    • 您可能需要在 onKeyPress 处理程序中开始跟踪事件。见此链接:stackoverflow.com/questions/5222181/…
    • 为什么 onKeyLongPress() 与 onLongPress()?
    • 两者都可以工作,但 onKeyLongPress 更简单、更容易实现。您可以直接在视图中使用它。 OnLongPress 是 GestureDetector.OnGestureListener 的一部分。您将不得不对整个手势检测器/监听器进行编码。如果你已经有了,当然可以使用它。
    • 请注意,onLongKeyPress 对 KEYCODE_BACK 不起作用,无论我是否在 onKeyDown 中调用 event.startTracking()...
    • @rockeye:这就是我正在做的事情。我的 onLongKeyPress 方法没有被调用(在 ICS 上,使用虚拟后退键)。我注意到使用物理后退键时,当我按住键时,我的视图会重复 onKey 事件,但使用虚拟键时,我只会得到一个向下和向上事件,这可以解释它。
    【解决方案2】:

    您可以设置长按按钮,如:

    btnNext.setLongClickable(true);
    btnNext.setOnLongClickListener(l)
    

    【讨论】:

    • 感谢您的回复,我想,这将启用长按按钮并为其设置监听器。我想要的是例如按键 A(按键的按键事件)被按下一段时间。
    • 在你的监听方法中,在执行任何代码之前,把 Thread.sleep(2000);它可能会帮助你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多