Android中TextureView与SurfaceView用法区别总结

 更新时间:2018年04月03日 16:24:56   投稿:wdc  
TextureView和SurfaceView都是继承自View类的,TextureView在Andriod4.0之后才引入的,SurfaceView不能加上动画、平移、缩放,TextureView可以但有1-3帧的延迟

SurfaceView和TextureView均继承于android.view.View

与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能。

一、SurfaceView专门提供了嵌入视图层级的绘制界面,开发者可以控制该界面像Size等的形式,能保证界面在屏幕上的正确位置。

但也有局限:

由于是独立的一层View,更像是独立的一个Window,不能加上动画、平移、缩放;

两个SurfaceView不能相互覆盖。

二、TextureView更像是一般的View,像TextView那样能被缩放、平移,也能加上动画。

TextureView只能在开启了硬件加速的Window中使用,并且消费的内存要比SurfaceView多,并伴随着1-3帧的延迟。

三、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则更加适合。

相关文章

  • Android实现简单断点续传和下载到本地功能

    Android实现简单断点续传和下载到本地功能

    这篇文章主要为大家详细介绍了Android实现简单断点续传和下载到本地功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android数据加密之Rsa加密的简单实现

    Android数据加密之Rsa加密的简单实现

    下面小编就为大家带来一篇Android数据加密之Rsa加密的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Android实现无限循环滚动弹幕的代码示例

    Android实现无限循环滚动弹幕的代码示例

    这篇文章主要介绍了android实现无限循环滚动的弹幕
    ,文中通过代码示例讲解的非常详细,对大家实现循环弹幕有一定的帮助,需要的朋友可以参考下
    2024-08-08
  • Android多线程AsyncTask详解

    Android多线程AsyncTask详解

    这篇文章主要为大家详细介绍了Android多线程AsyncTask的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • android实现指纹识别功能

    android实现指纹识别功能

    这篇文章主要介绍了android指纹识别功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 详解Flutter和Dart取消Future的三种方法

    详解Flutter和Dart取消Future的三种方法

    这篇文章主要为大家详细介绍了在Flutter和Dart中取消Future的三种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-04-04
  • Android仿微信朋友圈点击加号添加图片功能

    Android仿微信朋友圈点击加号添加图片功能

    这篇文章主要为大家详细介绍了Android仿微信朋友圈点击加号添加图片功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 新版Flutter集成到已有Android项目的实现

    新版Flutter集成到已有Android项目的实现

    这篇文章主要介绍了新版Flutter集成到已有Android项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Android 开源项目侧边栏菜单(SlidingMenu)使用详解

    Android 开源项目侧边栏菜单(SlidingMenu)使用详解

    SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果。如Evernote、Google+、Foursquare等,国内的豌豆夹,人人,360手机助手等都使用SlidingMenu的界面方案。
    2016-05-05
  • Android 开启闪光灯做手电筒的详解

    Android 开启闪光灯做手电筒的详解

    本篇文章是对Android中开启闪光灯做手电筒的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论