Android View 全解析(五) -- 实践自定义 View

在前面的系列文章之后,大家已经对 View 绘制中的各个过程熟悉了,这篇文章就根据前面所学的知识,来实际动手做一个自定义 View,这也是整个系列的完结篇了,会尽可能地涵盖自定义 View 中的各个方面,以及可能遇到的各种坑。在经过一番考量后,决定使用一个 PagerIndicator 作为例子进行讲解。在开始后面的文章之前,建议 Clone 下 https://github.com/woaitqs/FPageIndicator,对照着源码阅读,食用效果更佳。

Android 启动卡顿原因查询

启动是一个什么样的过程?首先要对这个过程进行一个定义。考虑到进程是否存在,对启动时间有着明确的影响,将启动分为两种情况。

冷启动 :在进程不存在的情况下,从点击应用 Icon 到用户能看到界面所占用的时间。 热启动 :在进程依然存在的情况下,点击应用 Icon 到用户能看到对应的界面所用的时间。

Android View 全解析(四) -- onDraw

在前面介绍了 onMeasure 用于确定 view 大小,onLayout 用于确定 view 的位置后,最后我们看看三大事件中最后压轴出场的 onDraw,这确定了 view 长什么模样。

onDraw 相对前面两者,涉及到的知识面非常的广。从 Canvas 提供的种类繁多的 API,到 Paint、Path 贝塞尔曲线等等高阶的工具,如果要细讲的话,估计这篇文章就得老长老长了。在这些工具的支持下,圆角按钮、复杂的下拉动画等等都手到擒来。关于这些工具的具体用法,在文末提供一些参考链接,有兴趣的同学可以去学习下。

Android View 全解析(三) -- onLayout

上一篇文章中,主要介绍了 onMeasure 的执行过程,这篇文章接着介绍下一个主要节点,onLayout。通过这篇文章的学习,可以了解 onLayout 的工作过程,已经常用的方法。最后以 FrameLayout 的 onLayout 方法来说明一下怎么自定义 onLayout 方法。

Android View 全解析(二) -- OnMeasure

上篇文章中,介绍了 view 与窗口系统的关系,以及在这个系统中是怎么触发 View 的三类重要事件的。接下来说说,三类事件中 onMeasure 事件,并以 FrameLayout 的 onMeasure 为例详细说明 measure 过程是如何进行的。