我一直在研究Android特别是View系统。 我有一个问题,但我母语中没有文件或参考文献。所以我想知道你们。
答案 0 :(得分:14)
<强> TextureView 强>
TextureView可用于显示内容流。这样的内容流可以例如是视频或OpenGL场景。
示例:
https://github.com/dalinaum/TextureViewDemo
文献:
http://developer.android.com/reference/android/view/TextureView.html
<强> SurfaceView 强>
提供嵌入视图层次结构内的专用绘图表面。
例子:
http://www.mindfiresolutions.com/Using-Surface-View-for-Android-1659.php
http://blog.wisecells.com/2012/06/04/surface-view-android/
文献:
http://developer.android.com/reference/android/view/SurfaceView.html
答案 1 :(得分:5)
SurfaceView
和TextureView
都继承自android.view.View类。
但是它们之间存在一些结构性差异。
如果您想要更多地控制单个绘图板,请转到SurfaceView
SurfaceView
。TextureView
相比, SurfaceView
具有以下优势:
TextureView
。答案 2 :(得分:1)
除了其他答案外,这对于新手android开发人员或将看到此内容的任何人可能都是有益的。
就我而言,在OnCreate
方法中使用此代码段有助于我找出哪些设备可以使用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
}
希望它可以帮助开发视频播放器应用程序的人:)
答案 3 :(得分:0)
Surfaceview
和 TextureView
可用于从另一个线程
Surfaceview
TextureView
答案 4 :(得分:0)
SurfaceView 采用与其他视图相同的参数,但 SurfaceView 内容在渲染时是透明的。
TextureView 比 SurfaceView 具有更好的 alpha 和旋转处理,但 SurfaceView 在合成分层视频的 UI 元素时具有性能优势。