0

对于 ICS 之前的 Xperia Play,从触摸板获取输入的唯一方法是通过 NativeActivity(不是普通的旧 Activity)。不幸的是,NativeActivity 中的所有绘图,顾名思义,都是在本机端完成的,而不是在 Java 端完成的。为了在 Java 端获得带有图形的本机端输入,必须在 NativeActivity 的 onCreate 方法中添加以下内容:

    getWindow().takeSurface( null );
    getWindow().setContentView( R.layout.main );

并通过 JNI 设置几个方法来接收来自本机端的触摸板和触摸屏输入。然后,您可以愉快地通过 Android 的 Java API 进行绘图,同时仍然获得触摸板输入。这对于 Xperia Play 运行的 pre-ICS 非常有效。即使通过 onCreateOptionsMenu 添加菜单也不会导致任何问题。

当 Xperia Play 运行 ICS 时,问题就出现了。菜单已移至操作栏。不幸的是,无法与操作栏交互(按下 3 个点会被忽略,就像我在按下操作栏后面的表面一样。)

万一有什么不同,我将通过 onCreateOptionsMenu 创建操作栏菜单选项。我正在使用 Window.FEATURE_ACTION_BAR_OVERLAY,并在用户按下“后退”按钮时使操作栏可见(mSingleton 是 NativeActivity 实例):

mSingleton.runOnUiThread(
    new Runnable()
    {
        public void run()
        {
            if( mSingleton.getActionBar().isShowing() )
                mSingleton.getActionBar().hide();
            else
                mSingleton.getActionBar().show();
        }
    } );

这使操作栏可见,但正如我所提到的,我无法与之交互。有没有办法强制动作栏有焦点或什么?普通菜单在 ICS 之前的版本上运行良好的事实让我认为它也应该可以与操作栏交互,因为它只是一个不同类型的菜单。

4

0 回答 0