我需要能够在屏幕上旋转视频,所以我创建了一个自定义 TextureView,它在 MediaPlayer 上提供了一个便利层,类似于 VideoView 的当前实现方式。这篇 Android 博客文章对 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“设备”的模拟器上运行良好。
这是预期的性能,还是我应该在其他地方寻找问题?谢谢