pau*_*ode 7 android android-ndk native-activity
有没有办法将NativeActivity的内容设置为用Java创建的组件(例如FrameLayout,ImageView等)?我需要使用NativeActivity(用于在Xperia Play上获取触摸板输入),但我还需要能够查看在Java代码中创建的组件.
我已经尝试重写onCreate命令并在那里调用setContentView,但是虽然这不会引发任何错误,但它也没有做任何事情(显然是因为内容视图已经由本机代码设置).是否存在某种窗口ID或者我可以传递给本机代码以告诉它内容视图应该是什么,或者可以在XML中以某种方式设置它以将NativeActivity的内容视图设置为我可以修改的组件来自Java?
如果您需要更多信息,请与我们联系.
pau*_*ode 12
我会在这里为同样问题的其他人发布答案,因为我最终找到了一个有效的方法.
在onCreate()方法中,如果要设置任何特定窗口标志(FEATURE_NO_TITLE,FLAG_FULLSCREEN,FLAG_KEEP_SCREEN_ON等),请在调用super.onCreate()之前执行这些操作(或者忽略它们).那么无论你通常把它放在哪里:
setContentView( whatever );
Run Code Online (Sandbox Code Playgroud)
改为:
getWindow().takeSurface( null );
getWindow().setContentView( whatever );
Run Code Online (Sandbox Code Playgroud)
这是从Java端获取内容的基本方法.代码中处理内容的任何地方,使用"getWindow()"而不是"this".
要记住的其他一些事情是,不会调用正常的onKey和onTouch方法(相反它们的本机等价物),所以如果你需要能够在Java端处理输入,你将不得不设置一些JNI链接将信息从本机发送到Java.我相信其他所有内容都包含在官方的XPeria Play触摸板示例代码中(AndroidManifest.xml的添加内容以及其他内容).
如果您想查看我的项目以供参考,它是开源的,可以在以下位置找到:
http://www.paulscode.com/forum/index.php?topic=75.msg1540#msg1540
只需点击"XPeria Play Touch-Pad示例"旁边的"源代码"链接即可.虽然它可能不是那么有用,因为它是一个相当大的项目,可能很难找到你想要的东西.如果您有任何问题,请在我的论坛上发帖提问或给我发电子邮件,我很乐意为您提供帮助.
| 归档时间: |
|
| 查看次数: |
3443 次 |
| 最近记录: |