Android TextureView 和 SurfaceView 对比浅析

来源:互联网 发布:喊麦声卡软件 编辑:程序博客网 时间:2024/05/16 06:44

    本人作为一名Android新手,最近在在开发一款有关吹画的小游戏,为了实现吹画的过渡动画以及画面更新效果,本人在TextureView和SurfaceView之间纠结了很长时间,所以写了这篇博客来和大家分享一下我的经历。

    首先,TextureView和SurfaceView都是继承自View类的,但是TextureView在Andriod4.0之后的API中才能使用。SurfaceView可以通过SurfaceHolder.addCallback方法在子线程中更新UI,TextureView则可以通过TextureView.setSurfaceTextureListener在子线程中更新UI,个人认为能够在子线程中更新UI是上述两种View相比于View的最大优势。

    但是,两者更新画面的方式也有些不同,由于SurfaceView的双缓冲功能,可以是画面更加流畅的运行,但是由于其holder的存在导致画面更新会存在间隔(不太好表达,直接上图)。并且,由于holder的存在,SurfaceView也不能进行像View一样的setAlpha和setRotation方法,但是对于一些类似于坦克大战等需要不断告诉更新画布的游戏来说,SurfaceView绝对是极好的选择。但是比如视频播放器或相机应用的开发,TextureView则更加适合。

    PS:TextureView中在xml文件中background设定似乎不管用,因此在有背景更新的应用中不是很方便,如果有大神了解的话希望多多指点。另外,这是本人第一篇博客,写的不好还望大家多多指教。

 

7 0