公司最近需要我们做个播放器,需要根据横竖屏自动切换视频的播放方向;刚开始我是用surfaceview控件+Mediplay来做播放器的,后面发现surfaceview不能对视频进行旋转,只能把surfaceview替换成Textureview; 这里我补充一下surfaceview与Textureview有哪些区别 surfaceview: 优点: 可以在一个独立的线程中进行绘制,不会影响主线程, 使用双缓冲机制,播放视频时画面更流畅 缺点: Surface不在View hierachy中,它的显示也不受View的属性控制,所以不能进行平移,缩放等变换,也不能放在其它ViewGroup中。SurfaceView 不能嵌套使用;
Textureview: 优点: 支持移动、旋转、缩放等动画,支持截图 缺点: 必须在硬件加速的窗口中使用,占用内存比SurfaceView高,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。
由上面的缺点可以知道,Textureview需要开启硬件加速(在AndroidManifest文件中application或activity节点添加android:hardwareAccelerated="true"即开启,false关闭); 不然就会无画面; 然而,硬件加速开启后,我发现没什么得到解决,我这个播放器依然是无画面; 最后通过不懈的努力后,才知道,Textureview与播放器路由选择有关,国家需要默认为en SystemProperties.set(“persist.sys.country”, “en”); 最终问题得到解决
|