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
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 :)
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
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
SurfaceView
.TextureView
has the following advantages over SurfaceView
:
TextureView
.Surfaceview
and TextureView
can be used to from another thread
Surfaceview
TextureView