21、Android自定义绘图与视图变换全解析

Android自定义绘图与视图变换全解析

1. 自定义绘图基础

在Android开发中,自定义绘图是一项强大的功能。首先要明确的是,一个小部件(widget)并不一定能获得它所请求的空间,它必须做好在实际分配的空间内进行绘制的准备。如果试图在父容器分配的空间之外进行绘制,绘制内容将被裁剪矩形(clip rectangle)裁剪。为了精确控制绘制,小部件可以实现 onLayout 方法记录分配空间的尺寸,或者检查 onDraw 方法参数 Canvas 的裁剪矩形。

当应用程序的某些状态发生变化,导致当前屏幕绘制过时,会调用 View invalidate 方法,这会将重绘事件添加到事件队列。当该事件最终被处理时,框架会调用视图树顶部的 draw 方法,此调用按前序遍历传播,每个视图在调用其子视图之前先绘制自身。

为防止额外绘制,Android UI框架维护了视图的一些状态信息,即裁剪矩形。它是传递给组件图形渲染方法的状态的一部分,可通过 Canvas 的方法获取和调整其位置和大小。通过正确设置裁剪矩形的大小、形状和位置,框架可以防止组件在其边界之外绘制或重新绘制已经正确绘制的区域。

在进行具体绘制之前,需遵循Android单线程MVC设计模式的两条基本规则:
- 绘制代码应放在 onDraw 方法内,当 onDraw 被调用时,小部件应完整绘制自身,反映程序状态。
- 当

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值