Google 为何把 SurfaceView 设计的这么难用?

简介: q

如果你有过 SurfaceView 的使用经历,那么你一定和我一样,曾经被它所引发出 层出不穷的异状 折磨的 怀疑人生—— 毕竟,作为一个有理想的开发者,在深入了解 SurfaceView 之前,你很难想通这样一个问题:

为什么 Google 把 SurfaceView 设计的这么难用?

不支持 transform 动画;
不支持半透明混合;
移动,大小改变,隐藏/显示操作引发的各种问题;
另一方面,即使你对 SurfaceView 使用不多,图形系统 的这朵乌云依然笼罩在每一位 Android 开发者的头顶,来看 Google 对其的 描述:

最终我尝试走近这片迷雾,并一点点去思考下列问题的答案:

SurfaceView 的设计初衷是为了解决什么问题?
实际开发中,SurfaceView 这么 难用 的根本原因是什么?
为了解决这些问题,Google 的工程师进行了哪些 尝试 ?
接下来,读者可带着这些问题,跟随笔者一起,再次回顾 SurfaceView 设计和实现的精彩历程。

一、世界观
在了解 SurfaceView 的设计初衷之前,读者首先需要对 Android 现有的图形架构有一个基本的了解。

Android 系统采用一种称为 Surface 的图形架构,简而言之,每一个 Activity 都关联有至少一个 Window(窗口),每一个 Window 都对应有一个 Surface。

Surface 这里直译过来叫做 绘图表面 ,顾名思义,其可在内存中生成一个图形缓冲区队列,用于描述 UI,经与系统服务的WindowServiceManager 通信后、通过 SurfaceFlinger 服务持续合成并送显到显示屏。

相关文章
|
前端开发 Android开发 数据安全/隐私保护
安卓MVI架构真的来了?动手试着封装吧(一)上
安卓MVI架构真的来了?动手试着封装吧(一)
276 0
|
24天前
|
Android开发 Swift iOS开发
探索Android与iOS开发的差异性:平台特性与用户体验的深度剖析
【7月更文挑战第27天】在移动应用开发的广阔天地中,Android和iOS两大阵营各自占据半壁江山。本文将深入探讨这两个平台在开发过程中的关键差异,从编程语言、工具集到用户界面设计原则,以及它们如何影响最终的用户体验。通过对比分析,我们将揭示每个平台的独特优势,并讨论如何在这些差异中寻找平衡点,以实现跨平台的成功。
|
4天前
|
搜索推荐 Android开发 iOS开发
探索安卓与iOS开发的差异之美
在数字时代的浪潮中,移动应用开发如同一场精心编排的交响乐,安卓和iOS这两大平台扮演着不同乐器的角色,各自以独特的方式奏响。本文将带领读者走进这场音乐盛宴,感受两大平台在开发过程中所展现的不同韵律,从设计理念到用户体验,从市场占有率到生态系统,我们将一探究竟,欣赏它们如何在竞争激烈的市场中和谐共存,共同推动技术的进步与创新。
12 0
|
3月前
|
安全 Android开发 Swift
探索安卓与iOS应用开发的异同
【5月更文挑战第31天】在移动应用开发领域,安卓和iOS两大平台各具特色,引领着市场的潮流。本文将深入探讨这两个平台在开发环境、编程语言、用户界面设计、应用商店政策以及安全性等方面的主要差异,为开发者提供全面而深入的比较分析。
|
开发工具
女朋友想要听歌,我反手用Flutter做了2个音乐播放器,给她拿捏了🎧
有很多小伙伴和我说,网上关于Flutter的音乐播放器资料太少了,我反手掉了10根头发给他们做了这样的音乐播放器,你就说得不得劲吧😎
女朋友想要听歌,我反手用Flutter做了2个音乐播放器,给她拿捏了🎧
|
Android开发 开发者 Kotlin
安卓MVI架构真的来了?动手试着封装吧(一)下
安卓MVI架构真的来了?动手试着封装吧(一)
133 1
|
Android开发 开发者 Kotlin
安卓MVI架构真的来了?动手试着封装吧(二)上
安卓MVI架构真的来了?动手试着封装吧(二)
122 0
安卓MVI架构真的来了?动手试着封装吧(二)上
|
API Android开发 Kotlin
安卓MVI架构真的来了?动手试着封装吧(三)下
安卓MVI架构真的来了?动手试着封装吧(三)
107 0
|
Android开发 Kotlin 容器
安卓MVI架构真的来了?动手试着封装吧(二)下
安卓MVI架构真的来了?动手试着封装吧(二)
84 0
|
Android开发 开发者 Kotlin
安卓MVI架构真的来了?动手试着封装吧(三)上
安卓MVI架构真的来了?动手试着封装吧(三)
133 0