Android GLSurfaceView設置透明背景及放置在頂層顯示

GLSurfaceView本身是不透明的,在相機預覽圖像上添加水印有時會採用在surface view上附加一層GLSufaceView繪製各種各樣的水印圖片,這時需要透明背景的GLSurfaceView並放置在上層顯示,可以通過如下方式實現:

class MyGLSurfaceView(context: Context, attributes: AttributeSet?) : GLSurfaceView(context, attributes) {

    constructor(context: Context) : this(context, null)

    private val renderer: MyGLRenderer

    init {

        // Create an OpenGL ES 2.0 context
        setEGLContextClientVersion(2)

        setTranslucent()

        renderer = MyGLRenderer()

        // Set the Renderer for drawing on the GLSurfaceView
        setRenderer(renderer)

        // Render the view only when there is a change in the drawing data
        renderMode = GLSurfaceView.RENDERMODE_WHEN_DIRTY
    }

    /**
     * 設置透明背景的方法
     * 這個方法需要在setRenderer之前調用纔有效
     */
    private fun setTranslucent(){
        setEGLConfigChooser(8, 8, 8, 8, 16, 0)
        holder.setFormat(PixelFormat.TRANSLUCENT)
        // 將GLSurfaceView置頂
        setZOrderOnTop(true)
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章