外观
如何设计一个合格的自定义 View?
标准回答
我会先明确控件的尺寸规则、绘制内容和交互方式,通过属性解析支持 XML 配置,onMeasure 把内容尺寸与父容器约束合并,onDraw 根据 padding 和实际尺寸绘制。绘制对象和可缓存几何尽量预先创建,避免每帧分配大量对象。触摸逻辑正确处理 DOWN、MOVE、UP 和 CANCEL,点击走 performClick,并补充无障碍、状态保存和不同密度适配。若需要安排子 View,就使用自定义 ViewGroup 并实现子节点测量和 onLayout。
延伸追问
尺寸相关计算通常放在 onSizeChanged 等适合的阶段;不能假设构造方法中已拿到最终宽高。
内容来源
- Android Framework 知识手册 · 原条目
5-8