SurfaceView

SurfaceView 与 TextureView 详解 播放视频或者渲染其他的动画的时候,有两个 View 组件可供选择,SurfaceView 和 TextureView。在 Android 7.0 上系统 Surfaceview 的性能比 TextureView 更有优势,支持对象的内容位置和包含的应用内容同步更新,平移、缩放不会产生黑边。 在7.0以下系统如果使用场景有动画效果,可以选择性使用TextureView。 阅读详情

记录鸿洋大神的知识点。


SurfaceView extends View

View是在主线程中进行绘制,而SurfaveView 是在子线程中进行绘制的。  

SurfaceView的优势是可以避免造成UI线程的阻塞。


SurfaceView中包含一个专门用于绘制的surface,surface中包含一个canvas。

canvas可以用getHolder来获取。

getHolder-->SurfaceHolder

holder--> canvas

honder不仅可以获得canvas还可以管理SurfaceView的生命周期。

1.surfaceCreated     对子线程进行创建,在run()方法中开启对SurfaceView的绘制

2.surfaceChanged

3.surfaceDestroyed  关闭子线程




反思:Google 为何把 SurfaceView 设计的这么难用? 的绘图表面所使用的图形缓冲区是完全由摄像头服务或者视频播放服务来提供的,因此,我们就不可以随意地去访问该图形缓冲区,而是要由摄像头服务或者视频播放服务来访问,因为该图形缓冲区有可能是在专门的硬件里面分配的。但在实际开发中,随着业务场景复杂度的上升,仍然有部分场景是无法被满足的,比如:在页面的最上方播放一条全屏的视频广告。相关的操作,放在不同的线程中执行,而多线程对这一块内存区域的读写,势必会引发内部状态的混乱。的设计中,设计者还考虑到了音视频渲染时,字幕相关业务的场景,因此额外提供了一个。 阅读详情

相关推荐

Android中SurfaceView使用详解

绘制的时候,在surfaceCreated()方法中开启子线程进行绘制,而子线程使用一个while(mIsDrawing)的循环来不停的进行绘制,在绘制的逻辑中通过lockCanvas()方法获取Canvas对象进行绘制,通过unlockCanvasAndPost(mCanvas)方法对画布内容进行提交。在我们的draw()方法每一次更新所耗费的时间是不确定的。在自定义的MySurfaceView的构造方法中,需要对SurfaceView进行初始化,包括SurfaceHolder的初始化、画笔的初始化等。

2401_89693823的博客 1652

安卓surfaceview的使用方式

surfaceview内部机制和外部层次结构在安卓开发中,我们经常会遇到一些需要高性能、高帧率、高画质的应用场景,例如视频播放、游戏开发、相机预览等。这些场景中,我们需要直接操作图像数据,并且实时地显示到屏幕上。view组件是在主线程中进行绘制的,如果绘制过程耗时过长或者频繁刷新,可能会导致主线程阻塞,影响用户交互和界面响应。view组件在绘制时没有使用双缓冲机制,也就是说每次绘制都是直接在屏幕上进行的,这可能会导致绘制过程中出现闪烁或者撕裂的现象。

Makenna's World 5518

面试:SurfaceView相关

• UI(主线程): 调用 SurfaceView.getHolder()获得SurfaceHolder对象• UI(主线程): 调用SurfaceHolder.addCallback(callback)添加回调函数• Render线程: 调用SurfaceHolder.lockCanvas()获得Canvas对象并锁定画布• Render线程: 调用Canvas的画图函数画图。

王温暖的博客 2609

什么是 SurfaceView?

Surface简介 Surface就是“表面”的意思,可以简单理解为内存中的一段绘图缓冲区。在SDK的文档中,对Surface的描述是这样的:“Handle onto a raw buffer that is being managed by the screen compositor”, 翻译成中文就是“由屏幕显示内容合成器(screen compositor)所管理的原生缓冲器的句柄”, 这句话包括下面两个意思: 通过Surface(因为Surface是句柄)就可以获得原生缓冲器以及其中的内

xj-up的博客 7418

SurfaceView的工作原理

大家在做android游戏和视频播放器的apk开发时,会经常用到SurfaceView这个类,以及它的子类VideoView,GLSurfaceView等.它与普通的View视图有本质的区别,本文就对SurfaceView的工作原理做个详细介绍. SurfaceView不与它的宿主窗口共享同一个绘图表面,它拥有自己独立的绘图表面,也就是说拥有独立的Surface本地窗口,它可以在一个独立的子线程

xqzhan的专栏 4044

SurfaceView详解

SurfaceView的定义 SurfaceView是View的子类,它内嵌了一个专门用于绘制的Surface,你可以通过getHolder获取它的SurfaceHolder,并通过SurfaceHolder的getSurface方法获取这个Surface。从而控制这个Surface的格式和尺寸,Surfaceview控制这个Surface的绘制位置。surface是纵深排序(Z-ordered)...

小红威武 1575

SurfaceView 基础用法

Android 游戏开发框架核心组件SurfaceView

分享美好的专栏 2万+

SurfaceView叠加展示

SurfaceView叠加展示 项目背景   最近集成网易云信的视频通讯SDK,碰到了一个问题。   画面展示用的是云信封装的SurfaceView,直接在布局中使用。结果绘制画面的时候总是出现覆盖问题。   PS:本地画面小窗展示(覆盖在远端界面之上),远端画面全屏展示。绘制远端画面的时候,本地小窗直接被覆盖。 解决方案   谷歌了一下“SurfaceV...

liangfeng093的博客 1553

SurfaceView 基本使用

SurfaceView 的基本使用 Android中提供了View进行绘图处理,View可以满足大部分的绘图需求,但是有时候,View却显得力不从心,所以Android提供了SurfaceView给Android开发者,以满足更多的绘图需求。下面就让我们一起来了解一下SurfaceView。 1. SurfaceView的作用 View是通过刷新来重绘视图,Android 系统通过发出VSYNC信号来进行屏幕的重绘,刷新的时间间隔是16ms,如果我们可以在16ms以内...

lixiong0713的博客 2万+

用SurfaceView实现落花动画效果

上篇文章中可以看出子线程更新main线程创建的View,会抛出异常。SurfaceView不依赖main线程,可以直接使用自己的线程控制绘制逻辑。具体代码怎么实现了?这篇文章用SurfaceView实现落花动画效果。

知道这个有什么用? 672

CAD的.dwg文件导入 ArcGIS:高程分析、坡度分析、坡向分析

CAD的.dwg文件导入 ArcGIS,再进行高程分析、坡度分析、坡向分析。

My_Echo_yM的博客 7235

surfaceview

​ SurfaceView是Android系统中的一种特殊的视图,提供一个嵌入在视图层次结构中的专用绘图表面,可以控制表面的格式和大小,该表面以Z顺序排列,位于持有其SurfaceView的窗口后面,SurfaceView在其窗口上挖洞以显示其表面,以便它的UI可以对用户可见。

weixin_44915162的博客 1021

第十二节:C#工业控制编程基础--输出正弦波实验

第十二节:基于c#使用开发板输出正弦波实验 文章目录第十二节:基于c#使用开发板输出正弦波实验一、实验目的:了解采集卡DA相关函数的使用。二、实验内容:利用C#生成正弦波,然后用采集卡DA输出。三、实验步骤:1.打开Visual Studio 2013,新建窗体应用程序项目,配置好板卡dll文件。2.在窗体中放入控件,对控件进行布局排版,并修改他们的Name属性和Text属性。3.在Chart控件内选择Spline型图表,如图2。4.进入编程区域,在public partial class Form1 :

weixin_49237052的博客 2296

SurfaceView绘图机制

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 虽然前面都使用的View来进行绘图,但View绘图机制存在两个缺陷: 1、缺乏双缓冲机制 2、更新图像时,必须更新View上的整张图片,效率低。 所以在游戏绘制中推荐使用SurfaceView。它可以只对指定...

孤云博客 5094

代谢组学数据分析实战:用R语言从PCA、PLS-DA到OPLS-DA一步步搞定(附代码)

本文详细介绍了使用R语言进行代谢组学数据分析的全流程,从数据预处理到PCA、PLS-DA和OPLS-DA模型构建与验证。通过实际案例和代码示例,帮助研究者掌握关键分析技术,提升数据解读能力,特别适合生命科学领域的研究人员。

weixin_28689507的博客 133

C#菜鸟教程学习笔记

C#菜鸟教程学习笔记 C#简介 C# 是一种编程语言,它是由微软开发的。 C# 编程是基于 C 和 C++ 编程语言的,它与 Java 也非常相似。 C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。 .Net 框架(.Net Framework)能编写出下面类型的应用程序: ①Windows 应用程序 ②Web 应用程序 ③Web 服务 常用的C# 编程的开发工具:Visual Studio(VS:可视化工作室) C#程序结构 一个 C# 程序(C# 文件的后缀为 .cs)主要包括以下部分

mlc_WTMOTW的博客 4978

【Android 你的SurfaceView休眠了吗】

SurfaceView基本定义网上有很详细的说明,这里不再进行废话啦。而我对它一个简单理解就是:可以在子线程绘制view的组件,而传统View的绘制都是在UI线程。网上看到这样一种解释觉得说的也不错:SurfaceView 就是在Window上挖一个洞,它就是显示在这个洞里,其他的View是显示在Window上,所以View可以显式在 SurfaceView之上,你也可以添加一些层在SurfaceView之上。传统View及其派生类的更新只能在UI线程,然而UI线程还同时处理其他交互逻辑。

da_caoyuan的博客 1456

TSMC65nm工艺下Virtuoso仿真gm-id曲线的保姆级教程(含ADE设置详解)

本文提供了一份在TSMC 65nm工艺下使用Cadence Virtuoso绘制gm-id曲线的详细教程。内容涵盖从理解gm/id方法学、搭建仿真环境、深度解析ADE设置,到运行DC仿真、提取数据并生成对数坐标曲线的完整流程。教程重点解析了Virtuoso ADE中的关键设置与常见避坑点,旨在帮助模拟集成电路设计初学者快速掌握这一核心设计工具,为高性能电路设计奠定基础。

grpc6streamer的博客 1173

通过surfaceView实现的虚拟摇杆控制

我们的机器人开发当中,移动端APP有一个控制的功能,实现当中,使用了一个类似于游戏手柄的界面,面对这样的界面首先肯定想到了使用"绘制"的方式搞定.那么就会使用到view或者surfaceview来实现了,而使用surfaceview能够在非UI线程上面进行,这必然是一大优势.先上图:   外部是一个背景图片,中间的渐变色圆圈是可以滑动"虚拟摇杆",控制区域是分为四个区域,如下图所示:

BlackSmith 2144

YOLOv5改进 | 注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制,附二次创新)

本文给家大家带来的改进机制是iRMB,其是在论文Rethinking Mobile Block for Efficient Attention-based Models种提出,论文提出了一个新的主干网络EMO(后面我也会教大家如何使用该主干,本文先教大家使用该文中提出的注意力机制)。其主要思想是将轻量级的CNN架构与基于注意力的模型结构相结合(有点类似ACmix)我将iRMB和C2f结合,然后也将其用在了检测头种进行尝试三种结果进行对比,针对的作用也不相同,但是无论那种实验均有一定涨点效果。

Snu77的博客 2570

python基础之语言发展历史

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。 目录一、前言二、发展历史1、Python是一种面向对象的解释型编程语言2、Python常被称为胶水语言3、Python由Guido开发4、Python连续多年入选编程语言TOP105、Python的发展历史三、总结 一、前言   由于Python语言的简洁性、易读性以及可扩展性,它在网络爬虫、数据分析、.

jiankang66的博客 3348

surfaceView

SurfaceView SurfaceView SurfaceView和View的区别: 双缓冲: 一.自定义View画图:在主线程画图 1.画布Canvas:画线/画圆/画文字/画椭圆/画弧度/画矩形/画点/画图片 2.画笔:Paint 二.自定义SurfaceView画图:在子线程画图 使用自定义的surfaceView画线 SurfaceView SurfaceView和View的区别: V...

lizhuang_666的博客 335

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025 (以YOLO26最新目标检测模型为基础,C3k2融合SEFN空间增强前馈网络模块改进Backbone)

2502_91881744的博客 237
下一篇: java 并发笔记
thecodeofsky
博客等级 码龄12年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值