surfaceView、surface和sufaceHolder的关系

article/2025/10/28 19:05:44

surfaceView、surface和sufaceHolder的关系

    • 1.SurfaceView与Surface的联系
    • 2.SurfaceView
    • 3.Surface
    • 4.SurfaceHolder

1.SurfaceView与Surface的联系

简单来说,Surface是管理显示内容的数据(implementsParcelable),包括存储于数据的交换。而SurfaceView就是把这些数据显示出来到屏幕上面。其关系如下:
请添加图片描述

2.SurfaceView

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

3.Surface

官方解释:

 Handle onto a raw buffer that is being managed by the screen compositor.

翻译:Surface是原始图像缓冲区(raw buffer)的一个句柄,而原始图像缓冲区是由屏幕图像合成器(screen compositor)管理的。

ps:当前窗口的像素数据存储在raw buffer中
 有C语言编程基础的同学只带知道,C语言可以通过一个文件的句柄来操作文件,从而获取文件的内容。 在Android中可以通过Surface就来获取raw buffer中的内容。
 当得到一个Surface对象时,同时会得到一个Canvas(画布)对象。Canvas对象,可以把它当做画布,Canvas的方法大多数是设置画布的大小、形状、画布背景颜色等等,要想在画布上面出你想要的效果,一般要与Paint对象结合使用。

/ 创建画笔  Paint paint = new Paint();  paint.setColor(Color.BLACK);// 设置黑色  canvas.drawCircle(60, 20, 10, paint);// 画一个圆 

Surface本身的作用类似一个句柄,得到了这个句柄就可以得到其中的Canvas、原生缓冲器以及其它方面的内容。

4.SurfaceHolder

SurfaceHolder是一个接口,其作用就像一个关于Surface的监听器。提供访问和控制SurfaceView背后的Surface 相关的方法 ,通过回调方法,我们可以知道到Surface的创建、销毁或者改变。在SurfaceView中有一个方法getHolder,可以很方便地获得SurfaceView所对应的Surface所对应的SurfaceHolder。也可以通过SurfaceHolder来控制surface的尺寸和格式,或者修改surface的像素


http://chatgpt.dhexx.cn/article/ukECaNRe.shtml

相关文章

线程天敌TerminateThread与SuspendThread http://blog.csdn.net/magictong/article/details/6304439

线程天敌TerminateThread与SuspendThread 标签: thread null delete dll c user 2011-04-06 13:22 10295人阅读 评论(1) 收藏 举报 分类: C Win32(93) 版权声明:本文为博主原创文章,未经博主允许不得…

511遇见易语言API模块线程挂起(SuspendThread)

线程挂起用到的API是SuspendThread 511遇见易语言模块API教程 API 暂停指定的线程 函数功能: 挂起线程。 参数: 第1个参数: HANDLE hThread 线程句柄。 返回值: 成功:线程的前一个挂起数。 失败:-1。 …

面向对象设计6大原则

概览 单一职责 1、单一职责 Single Responsibility Principle,简称是SRP。SRP的英文定义是: There should never be more than one reason for a class to change. 翻译过来的意思是: 应该有且仅有一个原因引起类的变更。 或许我们可以…

带你了解面向对象的设计原则

##一 摘要 今天晚上给大家介绍一下面向对象的设计原则,为什么要介绍这个呢,原因很简单,大家平时所接触的语言,无论是object-C,C,JavaScrpt,C#等都是属于面向对象语言,既然是面向对象设计语言,那么就有必要去了解一下面向对象的设计原则.那么面向对象的设计原则有哪些呢?今天来…

面向对象七大设计原则

面向对象设计的七大原则 前言 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,我们能要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。 面向对象设计原则概…

软件设计与体系——面向对象设计的原则

一:前言 用一道题熟悉OO设计与编程:给定一个4位数(数字不完全相同),这4个数字可以得到最大4位数和最小4位数,算它们的差,不是6174则重复上述过程,最终会得到6174,验证这…

面向对象设计七大原则

面向对象设计七大原则 1) 开-闭原则 (Open Closed Principle,OCP)定义开闭原则的作用实现方法例子其它例子代码 2) 里氏代换原则(Liskov Substitutiion Principle,LSP)定义作用实现方法例子 3) 依赖倒置原则…

面向对象设计六大原则

6大原则如下: 1)单一职责原则,一个合理的类,应该仅有一个引起它变化的原因,即单一职责,就是设计的这个类功能应该只有一个; 优点:消除耦合,减小因需求变化引起代码僵化。 2) 开-闭原则,讲的是设计要对扩展…

设计模式(三)——面向对象设计原则

设计模式需要遵循基本的软件设计原则。可维护性(Maintainability)和可复用性(Reusability)是衡量软件质量的重要的两个属性: 可维护性:软件能够被理解、改正、适应及扩展的难易程度可复用性:软件能够被复用的难易程度面向对象设计的原则是支持可维护性复用,一方面需要实…

程序员必备的七大面向对象设计原则(一)

花絮 每天都在和面向对象打交道,但是我们在应用面向对象的时候感觉自己的面向对象技术应用的很合理?理解的很到位?应用的很到位?用的时候恰到好处?用的是否符合软件的发展趋势? 上面很多一连串的问题&#…

面向对象设计原则之开闭原则

开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由Bertrand Meyer于1988年提出,其定义如下: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即…

面向对象设计模式5大基本原则

“宇宙万物之中,没有一样东西能像思想那么顽固。” 一爱默生 首先明确模式是针对面向对象的,它的三大特性,封装、继承、多态。 面向对象设计模式有5大基本原则:单一职责原则、开发封闭原则、依赖倒置原则、接口隔离原则、Liskov替换原…

面向对象六大设计原则

目录 1 、单一职责(Single Responsibility Principle) 2 、开闭原则(Open Close Principle) 3、里氏替换原则(Liskov Substitution Principle) 4、接口隔离原则(Interface Segregation Prin…

阿里巴巴编码规范解读(六、七)-工程结构及设计规约

工程结构 应用分层 1.【推荐】 图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于 Web层,也可以直接依赖于 Service层,依此类推。 开放接口层:可直接封装 Service 方法暴露成RPC…

面向对象设计的七大设计原则详解

面向对象的七大设计原则 文章目录 面向对象的七大设计原则简述七大原则之间的关系 一、开闭原则(The Open-Closed Principle ,OCP)概念理解系统设计需要遵循开闭原则的原因开闭原则的实现方法一个符合开闭原则的设计开闭原则的相对性 二、 里…

Android Binder机制简述

一、Android binder是什么? Android平台上的一种跨进程通信(IPC)机制 从OpenBinder演化而来 从Android应用层角度来说,Binder是客户端和服务端进行通信的媒介 二、IPC原理 每个Android进程,只能运行在自己的进程所…

不得不说的Android Binder机制与AIDL

说起Android的进程间通信,想必大家都会不约而同的想起Android中的Binder机制。而提起Binder,想必也有不少同学会想起初学Android时被Binder和AIDL支配的恐惧感。但是作为一个Android开发者,Binder是我们必须掌握的知识。因为它是构架整个Andr…

FrameWork-进程间通信之Binder机制AIDL

进程间通信之Binder机制 Binder是什么?为什么要使用Binder?Binder原理Binder使用实战 1、Binder是什么 Binder 是一种进程间通信机制,基于开源的 OpenBinder 实现;OpenBinder 起初由 Be Inc. 开发,后由 Plam Inc. 接…

Android 应用是如何启动 binder 机制的?

文章目录 应用是什么时候支持 binder 机制的应用大致启动流程是什么总结问题 应用是什么时候支持 binder 机制的 binder 都知道是用来做跨进程服务的,应用内可以通过binder 跟系统组件进行交互。如 AMS Service aidl 等那么可以思考一下,当 Activity on…