面试知识点整理:Skia 架构的场景渲染

前言

大家都知道渲染层级从渲染流程上分,Skia可分为如下三个层级:
1、指令层:SkPicture、SkDeferredCanvas->SkCanvas 这一层决定需要执行哪些绘图操作,绘图操作的预变换矩阵,当前裁剪区域,绘图操作产生在哪些layer上,Layer的生成与合并
2、解析层:SkBitmapDevice->SkDraw->SkScan、SkDraw1Glyph::Proc 这一层决定绘制方式,完成坐标变换,解析出需要绘制的形体(点/线/规整矩形)并做好抗锯齿处理,进行相关资源解析并设置好Shader
3、渲染层:SkBlitter->SkBlitRow::Proc、SkShader::shadeSpan等 这一层进行采样(如果需要),产生实际的绘制效果,完成颜色格式适配,进行透明度混合和抖动处理(如果需要)

Skia在Android中的地位

1、规定2D绘制API
2、规定图像数据结构
3、承担编解码调度和软件渲染职责

Android系统中主要使用Skia的场景

面试知识点整理:Skia 架构的场景渲染_第1张图片

像近几年的面试问的也越来越深入,比如以下问题:

  1. Skia引擎在android中的运用流程?

  2. Android的View数据转换与渲染?

  3. surfaceflinger在渲染体系中的地位及目的?

  4. UI绘制如何将View中的内容绘制到屏幕?

  5. Android原生界面渲染流程,跟Flutter中的skia引擎关系?

  6. Flutter 中的Framenwork中的UI绘制原理,UI事件处理 与AndroidUI区别?

但大多数开发者更多的还是在做业务开发,对于渲染这一块基本停留在"听说过"或者"简单使用工具"的阶段,其中不乏一些工作多年的 Android 工程师

当然如果想要精进,不仅要知道如何做渲染机制的渲染体系,还要对底层渲染原理充分了解,对Skia引擎在Android中的底层相关知识也要充分了解

这样才能够说得上是精通渲染机制

精通意味着

  1. 首先在大厂面试环节,渲染机制基本是必问项,你可以展示出个人实力;

  2. 一旦你进入大厂,对渲染机制了解越多,你能够做的事情就越多,产出也会越多,而且可以持续不断去做。

在一些面试中,也会看到一些朋友写“精通渲染机制”,但是让其描述,往往就是一些自己编写的业务,一些去除页面多余嵌套、使用线程池、ViewStub 这些非常浅的方案

想要搞清楚这些,那么必须对各种底层原理有着深度的了解,很多朋友经常遇到措手不及的问题,大多是因为对出现问题的情况和处理思路模糊不清,导致此原因就是因为没有彻底搞懂底层原理。

所以:真正的分水岭是对底层原理的理解。

现如今,国内移动互联网红利期已过,Android 开发也从最初的一人难求,到后来的一个岗位百人竞投,僧多粥少的情况直接导致整个行业对求职者的要求越来越高,

所以,我们只有不断提升自己的技术实力,让自己进阶为高工,才有机会爬上 Android 的顶峰

比如下面这张 Android学习路线图,不少人都看过,但少有人沉下心去仔仔细细研究过。

面试知识点整理:Skia 架构的场景渲染_第2张图片

有需要高清图片的朋友: 现在私信发送 “进阶” 即可免费获取

现在私信发送 “面试” 还可以获取《更多 Android 核心笔记+面试真题》

面试知识点整理:Skia 架构的场景渲染_第3张图片

面试知识点整理:Skia 架构的场景渲染_第4张图片

最后我想说:

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们

技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面

Android 架构师之路还很漫长,与君共勉

你可能感兴趣的:(Android,开发,android工程师,移动开发,面试,android,flutter,设计模式,java)