Skip to content
阅读进度

一个自定义 View 怎样做得正确又流畅? ​

返回 View 与显示链路 目录

标准回答 ​

先定义尺寸与交互契约,再实现测量、绘制和触摸处理;避免在 onDraw 中反复创建对象或执行 I/O。画笔、路径和尺寸相关结果在合适时机复用,尺寸变化时再重新计算。

机制解释 ​

以圆形设备进度条为例:onMeasure 处理 wrap_content;onSizeChanged 计算圆心和半径;onDraw 画背景轨道与进度;setProgress 更新值后重绘。还要处理 padding、颜色状态、无障碍描述和恢复状态。

延伸追问 ​

为什么手指操作了却没有点击语义?自己处理触摸时,确认在符合点击条件后调用 performClick,并正确处理 ACTION_CANCEL、多指切换和移动阈值。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。