Android自定义绘图与视图变换全解析
1. 自定义绘图基础
在Android开发中,自定义绘图是一项强大的功能。首先要明确的是,一个小部件(widget)并不一定能获得它所请求的空间,它必须做好在实际分配的空间内进行绘制的准备。如果试图在父容器分配的空间之外进行绘制,绘制内容将被裁剪矩形(clip rectangle)裁剪。为了精确控制绘制,小部件可以实现 onLayout 方法记录分配空间的尺寸,或者检查 onDraw 方法参数 Canvas 的裁剪矩形。
当应用程序的某些状态发生变化,导致当前屏幕绘制过时,会调用 View 的 invalidate 方法,这会将重绘事件添加到事件队列。当该事件最终被处理时,框架会调用视图树顶部的 draw 方法,此调用按前序遍历传播,每个视图在调用其子视图之前先绘制自身。
为防止额外绘制,Android UI框架维护了视图的一些状态信息,即裁剪矩形。它是传递给组件图形渲染方法的状态的一部分,可通过 Canvas 的方法获取和调整其位置和大小。通过正确设置裁剪矩形的大小、形状和位置,框架可以防止组件在其边界之外绘制或重新绘制已经正确绘制的区域。
在进行具体绘制之前,需遵循Android单线程MVC设计模式的两条基本规则:
- 绘制代码应放在 onDraw 方法内,当 onDraw 被调用时,小部件应完整绘制自身,反映程序状态。
- 当
超级会员免费看
订阅专栏 解锁全文
2421

被折叠的 条评论
为什么被折叠?



