【问题标题】:android - override menu long press to bring up app home screen and normal press to bring up menuandroid - 覆盖菜单长按调出应用主屏幕,正常按下调出菜单
【发布时间】:2011-06-03 17:34:32
【问题描述】:

我正在尝试获取菜单键以显示以下内容:

  1. 长按可调出我应用的主屏幕(而不是默认软键盘)
  2. 正常按下可调出菜单。

我可以做任何一个,但不能同时做。我错过了什么?一些代码将不胜感激。

谢谢

这是我所拥有的:

  @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  
    {   
     if (keyCode == KeyEvent.KEYCODE_MENU) 
     {
      event.startTracking();
      return true;
     }

 return super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
   if (keyCode == KeyEvent.KEYCODE_MENU && event.isTracking() && !event.isCanceled())
   {
      this.openOptionsMenu();
   }
   return super.onKeyUp(keyCode,event);
}


 @Override
    public boolean onKeyLongPress(int keyCode, KeyEvent event)
    {
        if (keyCode == KeyEvent.KEYCODE_MENU){

            if ( _activityId != WndId.Home)
            {
                navigateHome(NavDirection.Up);
                return (true);
            }
        }
        return super.onKeyLongPress(keyCode,event);
    }
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.muve_menu, menu);
        return true;
    }

【问题讨论】:

    标签: android menu keypress


    【解决方案1】:

    所以如果你调用 this.openOptionsMenu();在 onKeyUp() 中,您可以在常规屏幕上显示菜单,并且通过重定向到主屏幕来覆盖软键盘。

    【讨论】:

      【解决方案2】:

      我怀疑当你说你“可以做一个或两个都做”时,你的意思是如果你覆盖 onKeyUp 你看不到 onKeyLongPress?如果是这样,那是因为长按的按键事件也在通过 onKeyUp(可能在它们到达 onKeyLongPress 之前)并且您返回 true 表示您的代码已经处理了它 - 因此它永远不会到达 onKeyLongPress。

      文档是这么说的

      “每次按键都由一系列按键事件描述。按键以 ACTION_DOWN 的按键事件开始。如果按键保持足够长的时间以使其重复,则初始按下之后会出现带有 ACTION_DOWN 和getRepeatCount() 的非零值。最后一个按键事件是按键向上的 ACTION_UP。"

      因此,如果您想区分短按菜单和长按菜单,您还必须监视 onKeyDown 并区分多个 ACTION_DOWN。

      【讨论】:

      • 这就是 startTracking 的用途 1. onKeyUp() 被调用,我们用 startTracking() 拦截它,如果它长按它进入 OnKeyLongPress() 如果不是然后 onKeyUp() 如果我返回 super .onKeyUp() 它应该只是启动菜单,但它没有。有人知道如何调用菜单打开吗?
      猜你喜欢
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2014-05-04
      相关资源
      最近更新 更多