What's differences between Surfaceview and TextureView?

后端 未结 4 1322
忘掉有多难
忘掉有多难 2020-12-23 13:58

I\'ve been studying Android especially View system. I have a question differences between them but there is no documents or references in my mother language. So I want to kn

相关标签:
4条回答
  • 2020-12-23 14:20

    In addition to other answers, this could be beneficial for novice android developers or anyone who will see this.

    In my case, using this snippet in OnCreate method helped me to find out which device can use SurfaceView

        if (
                GLES20.glGetString(GLES20.GL_RENDERER) == null ||
                        GLES20.glGetString(GLES20.GL_VENDOR) == null ||
                        GLES20.glGetString(GLES20.GL_VERSION) == null ||
                        GLES20.glGetString(GLES20.GL_EXTENSIONS) == null ||
                        GLES10.glGetString(GLES10.GL_RENDERER) == null ||
                        GLES10.glGetString(GLES10.GL_VENDOR) == null ||
                        GLES10.glGetString(GLES10.GL_VERSION) == null ||
                        GLES10.glGetString(GLES10.GL_EXTENSIONS) == null) {
            // try to use SurfaceView
        } else {
            // try to use TextureView
        }
    

    Hope it helps people who develop video player apps :)

    0 讨论(0)
  • 2020-12-23 14:36

    TextureView

    A TextureView can be used to display a content stream. Such a content stream can for instance be a video or an OpenGL scene.

    Example :
    https://github.com/dalinaum/TextureViewDemo

    Document:
    http://developer.android.com/reference/android/view/TextureView.html

    SurfaceView

    Provides a dedicated drawing surface embedded inside of a view hierarchy.

    Examples :
    http://www.mindfiresolutions.com/Using-Surface-View-for-Android-1659.php
    http://blog.wisecells.com/2012/06/04/surface-view-android/

    Document:
    http://developer.android.com/reference/android/view/SurfaceView.html

    0 讨论(0)
  • 2020-12-23 14:40

    SurfaceView and TextureView both are inherited from android.view.View class. However there are some structural difference between them.

    When you want more control of the single drawing board, go for SurfaceView

    • You cannot overlay two SurfaceView.

    TextureView has the following advantages over SurfaceView:

    • You can Animate, Transform and Scale a TextureView.
    0 讨论(0)
  • 2020-12-23 14:43

    Surfaceview and TextureView can be used to from another thread

    Surfaceview

    • better performance to use in bound with UI elements
    • less memory

    TextureView

    • API 14
    • separate window is not created(unlike Surfaceview) that is why alpha, rotation, move, transform, animate are better
    • is used inside hardware accelerated mode
    0 讨论(0)
提交回复
热议问题