android - studio - ¿Qué diferencias hay entre Surfaceview y TextureView?
surfaceview vs view (3)
He estado estudiando especialmente el sistema de visualización de Android. Tengo una pregunta acerca de las diferencias, pero no hay documentos ni referencias en mi idioma materno. Así que quiero saber de ustedes chicos.
Además de otras respuestas, esto podría ser beneficioso para los desarrolladores novatos de Android o cualquier persona que vea esto.
En mi caso, usar este fragmento de OnCreate
en el método OnCreate
me ayudó a descubrir qué dispositivo puede usar 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
}
Espero que ayude a las personas que desarrollan aplicaciones de reproductor de video
SurfaceView
y TextureView
se heredan de la clase android.view.View. Sin embargo, hay alguna diferencia estructural entre ellos.
Cuando desee más control del tablero de dibujo único, vaya a SurfaceView
- No puede superponer dos
SurfaceView
.
TextureView
tiene las siguientes ventajas sobre SurfaceView
:
- Puedes animar, transformar y
TextureView
unTextureView
.
TextureView
Un TextureView se puede utilizar para mostrar un flujo de contenido. Tal flujo de contenido puede ser, por ejemplo, un video o una escena OpenGL.
Ejemplo:
https://github.com/dalinaum/TextureViewDemo
Documento:
http://developer.android.com/reference/android/view/TextureView.html
SurfaceView
Proporciona una superficie de dibujo dedicada incrustada dentro de una jerarquía de vistas.
Ejemplos:
http://www.mindfiresolutions.com/Using-Surface-View-for-Android-1659.php
http://blog.wisecells.com/2012/06/04/surface-view-android/
Documento:
http://developer.android.com/reference/android/view/SurfaceView.html