首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android-NDK:使用本机代码创建GUI元素

Android-NDK:使用本机代码创建GUI元素
EN

Stack Overflow用户
提问于 2013-01-24 17:28:26
回答 1查看 3.3K关注 0票数 2

就我对Android-NDK-thingy的理解而言,它的工作原理如下:我必须使用一个NativeActivity,它本身会调用附加的本机代码来移交一些OpenGL图形上下文。这个上下文可以被原生部分用来绘制一些东西。

到目前为止我还不能解决的问题是:一些GUI元素怎么样?有没有可能仅仅为了创建一些UI元素或者使用布局而从本机代码回调到Java?意味着可以将标准的Android GUI元素也用于这样的本机代码吗?

如果是:如何做到这一点?如果不存在:有什么替代方案(除了手动绘制所有内容)?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-02-09 20:05:00

如果你想在openGL视图上使用图形用户界面的东西,我认为使用一个普通的Activity而不是一个NativeActivity会更好。您可以使用名为GL2JNIActivity的安卓示例。选中that将其从Eclipse导入。

您可以在JNI Library部件(示例中的类JNILib )中声明一些本机函数。当您的GUI侦听器被调用时,您将调用它。基本上它看起来是这样的:

代码语言:javascript
复制
public class GL2JNILib {

 static {
     // Maybe you need to load other relevant libraries here
     System.loadLibrary("gl2jni");
 }

 public static native void init(int width, int height);
 public static native void step();

 /*Add here your native functions to send to the native code*/     
 public static native void buttonClicked();
 //... add other listeners here (i.e: screen touched, etc.)

}

然后在活动本身中(在对应于类JNIActivity的示例中),您可以像往常一样加载一个XML文件。当您通过图形用户界面获得一些输入时,您可以只调用添加到GL2JNI类中的本机函数。它或多或少会看起来像这样:

代码语言:javascript
复制
public class GL2JNIActivity extends Activity {

    GL2JNIView mView;
    Button mButton;

    @Override protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        mView = new GL2JNIView(getApplication());
        setContentView(mView);
        mButton = (Button)findViewById(R.id.your_button);        
        mButton.setOnClickListener( new Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                mView.buttonClicked();
            }
        });
    }

    /*...*/
}

最后,您必须在本机端实现本机函数:

代码语言:javascript
复制
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_buttonClicked(
            JNIEnv * env, jobject obj)
{
    // will be called when the button is clicked
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14497906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档