当前位置: 首页 > article >正文

TextureView和SurfaceView

1、Surface
Surface对应了一块屏幕的缓冲区,每一个window对应一个Surface,任何View都是画在Surface上的,传统的View共享一块屏幕缓冲区,所有的绘制都必须在UI线程上进行。

2、SurfaceView
顾名思义就是Surface的View,通过SurfaceView就可以看到Surface的部分或者全部的内容。也就是说,Surface是用通过SurfaceView才能展示其中的内容。

3、SurfaceView特点
从面的图片可以看到SurfaceView自带一个Surface,这个Surface在WMS中有自己对应的WindowState,在SF中也会有自己的Layer。

SurfaceView的工作方式就是创建一个置于应用窗口之后的新窗口。这使得SurfaceView的绘制和刷新可以在单独的线程中进行,从而大大提高效率,并且SurfaceView窗口刷新的时候不需要重绘应用程序的窗口(android普通窗口的视图绘制机制是一层一层的,任何一个子元素或者是局部的刷新都会导致整个视图结构全部重绘一次,因此效率非常低下,不过满足普通应用界面的需求还是绰绰有余)。

但是因为SurfaceView的内容不在应用窗口上,所以不能使用变换(平移、缩放、旋转等)。也难以放在ListView或者ScrollView中,不能使用UI控件的一些特性比如View.setAlpha()。

界面层级.png

4、TextureView
TextureView是在4.0(API level 14)引入的,与SurfaceView相比,它不会创建新的窗口来显示内容。它是将内容流直接投放到View中,并且可以和其它普通View一样进行移动,旋转,缩放,动画等变化。TextureView必须在硬件加速的窗口中使用(API 级别为 14 及更高级别,硬件加速默认处于启用状态)。

TextureView占用内存比SurfaceView高,耗电也高,绘制会有一定延迟,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。

SurfaceView及TextureView区别
Android中使用TextureView播放视频


http://www.kler.cn/news/108189.html

相关文章:

  • 【Python 算法】信号处理通过陷波滤波器准确去除工频干扰
  • localhost知识
  • iMazing2024年最新许可证-iMazing许可证激活补丁
  • UE5实现相机水平矫正
  • 基于数字电路交通灯信号灯控制系统设计-单片机设计
  • 什么是三元表达式?
  • 【机器学习】项目数据处理部分
  • 利用Linux socat快速搭建TCP服务器
  • 基于springboot环保话题管理系统-计算机毕设 附源码 28550
  • 【黑产攻防道03】利用JS参数更新检测黑产的协议破解
  • Android应用:实现网络加载商品数据【OKHttp、Glide、Gson】
  • VCS 和 SCM
  • 系统架构设计师-第13章-层次式架构设计理论与实践-软考学习笔记
  • Android蓝牙 - 常用蓝牙配置文件
  • 3D模型怎么贴法线贴图?
  • element的tabs组件使用问题解决
  • Java集成腾讯云OCR身份证识别接口
  • cosover是什么?crossover23又是什么软件
  • MAC下安装Python
  • Linux网络基础
  • IOC课程整理-15 Spring 类型转换
  • JavaScript_对象_Function_定义与参数
  • 文章分类管理接口
  • Gin vs Beego: Golang的Web框架之争
  • Vue 路由传参和获取参数的方法
  • C++类模板再学习
  • 闭包通俗解释,Demo(Go Java Python)
  • winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo
  • pytest方法间变量值传递--request夹具
  • ajax有哪些优缺点?