外观
如何为自定义 View 支持 XML 属性配置并兼容不同屏幕密度?
标准回答
在 attrs.xml 用 declare-styleable 定义属性,自定义 View 构造时用 obtainStyledAttributes 读取 TypedArray,读取后 recycle。尺寸在 XML 用 dp、文字用 sp;读取 dimension 得到像素后再用于测量和绘制。
通俗例子
定义 ringColor 和 ringWidth,构造时读取 TypedArray 并及时回收;20dp 转成当前屏幕的像素后用于绘制。
深入解释
**XML 属性如何生效:**先声明控件支持的属性,再在构造过程中读取颜色、尺寸等值,保存为成员供测量或绘制使用。读取 TypedArray 后应及时 recycle。
**逻辑尺寸怎样使用:**布局里用 dp 表达尺寸,文字用 sp 适应字体设置;绘制 API 最终需要像素。已通过 getDimension 等读到的尺寸通常已经是像素,不应重复换算。
内容来源
- Android · AI Agent 知识手册 · 原条目
2.4.2