Android,透明子GLSurfaceView布局?

shk*_*kim 7 android background opengl-es transparent

可能重复:
Android OpenGL ES透明背景

我想在普通的2d ui布局屏幕上显示一些3d对象.

2d ui屏幕具有背景图像,GLSurfaceView是内容布局的子项.

我在ApiDemos样本中尝试了相同的Translucent GLSurfaceView技术,

但GLSurfaceView清除所有并显示黑色背景.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"    
    android:background="@drawable/my_background_image"
>

...

<android.opengl.GLSurfaceView android:id="@+id/glview"  
    android:layout_width="fill_parent"
    android:layout_height="300px"
    android:windowIsTranslucent="true" (i'm not sure this is right)
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
setContentView(R.layout.main);
...
glview = (GLSurfaceView) findViewById(R.id.glview);
glview.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
glview.getHolder().setFormat(PixelFormat.TRANSLUCENT);
glview.setRenderer(this);
...
gl.glClearColor(0, 0, 0, 0);
...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以保留底层背景图像吗?

P.M*_*lch 25

这解决了我:

    glview = (GLSurfaceView)findViewById(R.id.glview); 

    glview.setEGLConfigChooser(8,8,8,8,16,0);

    glview.setRenderer(new MyRenderer(this));
    glview.getHolder().setFormat(PixelFormat.TRANSLUCENT);

    // this made it work for me - works only from sdk level 6 on, though....
    glview.setZOrderOnTop(true);
Run Code Online (Sandbox Code Playgroud)

  • @ P.Melch这使得GlSurfaceView位于所有视图之上.现在我无法在GlSurfaceView上设置另一个视图.有没有其他方法可以使GlSurfaceView透明化. (2认同)