外观
一个自定义 View 怎样做得正确又流畅?
标准回答
先定义尺寸与交互契约,再实现测量、绘制和触摸处理;避免在 onDraw 中反复创建对象或执行 I/O。画笔、路径和尺寸相关结果在合适时机复用,尺寸变化时再重新计算。
机制解释
以圆形设备进度条为例:onMeasure 处理 wrap_content;onSizeChanged 计算圆心和半径;onDraw 画背景轨道与进度;setProgress 更新值后重绘。还要处理 padding、颜色状态、无障碍描述和恢复状态。
延伸追问
为什么手指操作了却没有点击语义?自己处理触摸时,确认在符合点击条件后调用 performClick,并正确处理 ACTION_CANCEL、多指切换和移动阈值。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q12