【发布时间】:2013-01-13 11:49:13
【问题描述】:
我需要能够在屏幕上旋转视频,因此我创建了一个自定义 TextureView,它在 MediaPlayer 上提供了一个便利层,类似于当前 VideoView 的实现方式。 This Android blog post 对 TextureView 说如下:
由于 SurfaceView 的内容不在应用程序的窗口中,因此无法有效地转换(移动、缩放、旋转)。这使得在 ListView 或 ScrollView 中使用 SurfaceView 变得困难。 SurfaceView 也无法与 UI 工具包的某些功能正确交互,例如淡入淡出边缘或 View.setAlpha()。
为了解决这些问题,Android 4.0 引入了一个名为 TextureView 的新小部件,它依赖于硬件加速的 2D 渲染管道和 SurfaceTexture。 TextureView 提供与 SurfaceView 相同的功能,但与 SurfaceView 不同的是,它的行为类似于常规视图。例如,您可以使用 TextureView 来显示 OpenGL 场景或视频流。 TextureView 本身可以动画、滚动等。
但是,TextureView 似乎正在努力播放视频。我正在测试它的目标设备具有 1.2Ghz Rockchip RK3066 双核 CPU、四核 Mali-400 GPU (ARM) 和 1GB RAM。在此设备上使用 VideoViews 的相同代码执行良好,但 TextureViews 在播放时“断断续续”或根本不显示(左上角带有白色方块的黑框),具体取决于特定设备。 TextureViews 在使用 Intel 提供的 x86“设备”的模拟器上运行良好。
这种性能会达到预期吗,还是我应该到别处寻找问题?谢谢
【问题讨论】:
-
我不太了解您的特定设置。查看您的 sml 和一些相关的 java 可能会有所帮助。是否有权重应用于纹理视图? UI 编辑器中抛出了哪些警告?他们可能会帮助你。
-
你能解决这个问题还是最好避免在媒体播放器中使用textureview?
-
我们最终没有使用
TextureView
标签: android performance android-widget android-videoview