如何在glview(openGL)之上进行第二次布局

时间:2014-08-26 09:58:40

标签: java android android-layout opengl-es webview

我正试图在我的glView上设置其他布局(在我的情况下:一个WebView)。

glView = new GLSurfaceView(this);
glView.setRenderer(this);
setContentView(glView);

我搜索并阅读了有关此内容的文章,并且所有建议我应该这样做:

  1. 为我的glview设置内容视图
  2. 添加内容视图(作为父视图)(相对布局)
  3. 在我的父视图中添加webview
  4. 我遵循以下建议:

    glview is declared in other class file (as i wrote above)

    然后在我的实际班级......

      webView = new WebView(glGame);
      glGame.addContentView(rl, null);
      rl.addView(webView);
    

    但是,我收到了这个错误:

    08-26 19:37:21.855: E/AndroidRuntime(23376): FATAL EXCEPTION: GLThread 23363
    08-26 19:37:21.855: E/AndroidRuntime(23376): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.os.Handler.<init>(Handler.java:197)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.os.Handler.<init>(Handler.java:111)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebViewClassic$PrivateHandler.<init>(WebViewClassic.java:12520)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebViewClassic.<init>(WebViewClassic.java:2144)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebViewClassic$Factory.createWebView(WebViewClassic.java:3021)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebView.ensureProviderCreated(WebView.java:1980)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebView.setOverScrollMode(WebView.java:2033)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.view.View.<init>(View.java:3381)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.view.View.<init>(View.java:3434)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.view.ViewGroup.<init>(ViewGroup.java:446)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:52)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebView.<init>(WebView.java:510)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebView.<init>(WebView.java:487)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebView.<init>(WebView.java:468)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebView.<init>(WebView.java:457)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.webkit.WebView.<init>(WebView.java:447)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at com.phielosoft.androidgames.jnftt.LevelScreen.<init>(LevelScreen.java:38)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at com.phielosoft.androidgames.jnftt.MainMenuScreen.update(MainMenuScreen.java:50)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at com.phielosoft.androidgames.framework.impl.GLGame.onDrawFrame(GLGame.java:93)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1524)
    08-26 19:37:21.855: E/AndroidRuntime(23376):    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
    

1 个答案:

答案 0 :(得分:0)

你的代码是否在一个与UI线程不同的线程中添加webView,我的意思是,是在Task executor中还是什么?

顺便说一句。您可以使用布局实现图层效果,只需设置元素的可见标记,如下所述:Layout Layers? Z-Axis?