SurfaceView和View的区别,你知道吗?


以一
以一 2024-01-08 18:05:48 66342 赞同 0 反对 0
分类: 资源
View的主要功能: 绘制界面:View负责在其指定的区域内绘制内容,如文本、图像等。 事件处理:View可以响应触摸事件、键盘事件等用户交互操作。 布局参数:View可以设置各种布局参数,如宽度、高度、边距等,以控制其在屏幕上的显示位置和大小。 View注意点: View的大小和位置:可以通过设置View的宽度和高度属性来控制其大小,通过设置left、top、right、bottom属性来控制其位置。 View的绘制性能:View的绘制可能会比较消耗性能,因此应避免在性能敏感的区域进行复杂的绘制操作。 View的事件处理:View的事件处理应尽可能高效,以避免影响用户体验。

View的主要功能:

  • 绘制界面:View负责在其指定的区域内绘制内容,如文本、图像等。
  • 事件处理:View可以响应触摸事件、键盘事件等用户交互操作。
  • 布局参数:View可以设置各种布局参数,如宽度、高度、边距等,以控制其在屏幕上的显示位置和大小。

View注意点:

  • View的大小和位置:可以通过设置View的宽度和高度属性来控制其大小,通过设置left、top、right、bottom属性来控制其位置。
  • View的绘制性能:View的绘制可能会比较消耗性能,因此应避免在性能敏感的区域进行复杂的绘制操作。
  • View的事件处理:View的事件处理应尽可能高效,以避免影响用户体验。

SurfaceView介绍

SurfaceView是Android中一个重要的绘图容器,可以直接从内存或者DMA等硬件接口取得图像数据。它的特性是可以在主线程之外的线程中向屏幕绘图,从而避免画图任务繁重的时候造成主线程阻塞,提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。

SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surface的格式和尺寸。Surfaceview控制这个Surface的绘制位置。surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。

SurfaceView提供了一个可见区域,只有在这个可见区域内的Surface部分内容才可见,可见区域外的部分不可见。surface的排版显示受到视图层级关系的影响,它的兄弟视图结点会在顶端显示。这意味着 surface的内容会被它的兄弟视图遮挡,这一特性可以用来放置遮盖物(overlays)(例如,文本和按钮等控件)。

注意:如果Surface上面有透明控件,那么它的每次变化都会引起框架重新计算它和顶层控件的透明效果,这会影响性能。另外,SurfaceView变得可见时,Surface被创建;SurfaceView隐藏前,Surface被销毁。这样能节省资源。

两者区别

SurfaceView和View的区别主要表现在绘制机制、性能、同步问题和适用场景等方面。

  • 绘制机制:SurfaceView和View在绘制机制上有根本的区别。View的绘制必须在UI主线程中完成,而SurfaceView可以在一个单独的线程中进行绘制。这意味着在处理大量绘图操作时,使用SurfaceView可以避免阻塞UI主线程,提高应用程序的响应性。
  • 性能:由于SurfaceView在独立的线程中进行绘制,它可以更高效地处理大型数据集和复杂的图形操作。这使得SurfaceView更适合于需要频繁更新或处理大量数据的场景,如游戏或视频播放器等。
  • 同步问题:虽然SurfaceView的绘制操作独立于UI主线程,但这也带来了事件同步的问题。例如,如果你需要在SurfaceView中处理触摸事件,需要设计一个事件队列来保存这些事件,因为它们发生在不同的线程中。这需要更复杂的编程模型,因为涉及到线程同步的问题。
  • 适用场景:View适用于一般的应用程序界面开发,它提供了基本的绘制和事件处理功能。而SurfaceView更适合于需要高性能和复杂图形操作的场景,如游戏或视频播放器等。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
以一L0
粉丝 0 资源 1143 + 关注 私信
最近热门资源
国产操作系统环境搭建(内含镜像资源链接和提取码)  94
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  90
分享几个在日常办公中可以用到的shell脚本  83
bat脚本生成查看电脑配置\硬件信息  80
以openkylin为例编译安装内核  79
常见系统问题及其解决方法  79
分享解决宏碁电脑关机时自动重启的方法  76
统信uosboot区分未挂载导致更新备份失败  71
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  70
loadrunner常见问题整理  67
最近下载排行榜
国产操作系统环境搭建(内含镜像资源链接和提取码) 0
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
分享几个在日常办公中可以用到的shell脚本 0
bat脚本生成查看电脑配置\硬件信息 0
以openkylin为例编译安装内核 0
常见系统问题及其解决方法 0
分享解决宏碁电脑关机时自动重启的方法 0
统信uosboot区分未挂载导致更新备份失败 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
loadrunner常见问题整理 0
作者收入月榜
1

prtyaa 收益401.13元

2

zlj141319 收益238.21元

3

哆啦漫漫喵 收益231.75元

4

IT-feng 收益219.92元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.17元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!