往期回顾,专栏目录,更新动态,优惠政策,版权须知
温馨提示:如这是第一次接触《重学安卓》,可通过上述链接快速了解《重学安卓》专栏,获取 专栏目录、试读内容、更新动态 和 发展状况。
截至目前,专栏已对 体系化文章 实施 3310 余次修订,数十位群友告诉我,受专栏启发 亦开启了写作之路。群里不定期会有小伙伴讨论适配问题、分享原创开源库 和 提供内推机会,订阅后可随时进群交流。
·
Note 2021.5.25 重要提示:
阅读本文最佳时机是,您已吃过 阅读 “源码” 或 “源码分析文” 时 找不到头绪的苦。
您还没吃过苦,那您先不要着急阅读本文。您得吃过苦,才会有体会。
在您吃够这方面苦后,您才有机会发现,本文正是专用于解决 “如何选择和归类自定义控件” 的困扰。
我们 绝不通篇贴源码,而是基于广泛的实践和反思,在累积过大量样本 乃至足以排除掉所有干扰信息后,点到为止揭露 “视图交互” 乃至 “产品设计” 最核心本质,方便您理解背后逻辑,乃至可笃信挑选或实现自定义控件使用项目中。
·
Note 2022.6.3:本文初版 2019,重写于 2022。
2022 版以 “学习顺序、踩坑路线” 为线索,分享自定义 View 学习的心路历程。
同时本文也是担起 “目录/导读/提纲挈领” 的作用,文中会罗列常规的爬坑顺序,和对应的章节文章链接,方便读者了解完来龙去脉后,根据兴趣跳转阅读。
从 0 到 1 “自定义视图” 爬坑
常言道,人教人,教不会,事教人,一次便会。
自定义 View 乃至 View 系统,是一个动手实践后,便逐渐能够理解和熟悉的事物,
故此本篇以 “学习顺序、踩坑路线” 为线索,分享自定义 View 学习的心路历程,和相关资料链接,
相信跟随这些资料,动手实践过一遍后,你会逐渐产生兴趣,和找到感觉。
文章目录一览
- 从 0 到 1 “自定义视图” 爬坑
- 1.兴趣是最好老师
- 2.开始发现问题
- 3.开始反思问题
- 4.继续追溯问题
- 5.跳出技术圈追溯
- 6.继续修炼
- “开源库” 共享计划
1.兴趣是最好的老师
正如我们在《过目难忘 Android GUI 关系梳理》所述,视图的本质是 “用于排版的模板”,排版的基石是 “绘制”,绘制对应的技术点是 Canvas,
因而最开始可跟着发行于 2017 年《Hencoder》Canvas 绘制教程学习,透过这一系列 “图文并茂” 教程阅读和训练,你可尝到 “自定义绘制” 甜头,这是后续学习动力之所在。
2.开始发现问题
当跟着上述系列教程,迈出第一步,随即便有机会发现问题 —— 虽然图形被绘出,但离 “实际使用” 还有一段距离,也即上述教程是 “定向突破” 绘制本身,但无介绍 “View 坐标体系”,导致图形尺寸、方位与预期不符(要么太小,要么不对称,要么 … )
于是这时可通过发行于 2015 年《Android 开发艺术探索》View 章节,补足 View 坐标体系基础。
3.开始反思问题
然而看着看着就会发现,纸上得来终觉浅,某些 “必要细节” 描述往往模棱两可(只记录现象结果,不说为什么),阅读过程不太流畅、云里雾里 —— 终究还是要靠自己,自己动手打 Log 输出查看结果。
毕竟是关乎 “基本功” 修炼,“自行监测和检验” 过程必不可少,人们往往出于 “畏难情绪” 试图得过且过,然而作为基石这一步不迈过,后续进阶其实都免谈。
所以这阶段的一条出路是 … 既然 Hencoder 专注定点突破,那么 Hencoder Plus 想必是有这方面体系化知识来补足,
笔者走过的对自己影响深远另一条出路是,基于 “第一性原理” 反思 —— 索性跳出源码细节,首先站在 “源码设计师” 角度反思,当我们设计一个视图系统时,到底有哪些因素需被考虑 —— 一旦这样思考,很多既有现象 “为何存在”、“为何会设计成这样子”,也都不言自明,