Android Drawable
Drawable 简介
Drawable 表示一种可以在 Canvas 上进行绘制的抽象的概念,种类很多,常见的比如颜色或图片。
Drawable 的分类
BitmapDrawable
表示的一张图片,可以直接引用原始的图片或通过 XML 的方式来描述它。
NinePatchDrawable 表示一张 .9 格式的图片,使用也是一样的。
BitmapDrawable 也可以代表一个 .9 格式图片。
ShapeDrawable
可理解为通过颜色来构造的图形,可以是纯色的图形,也可以是具有渐变效果的图形。<shape>
标签创建的 Drawable,其实体类是 GradientDrawable。
LayerDrawable
其对应的 XML 标签是<layer-list>
,表示一种层次化的 Drawable 集合。
StateListDrawable
对应于<selector>
标签,也是表示 Drawable 集合,每个 Drawable 对应着 View 的一种状态。
LevelListDrawable
对应于<level-list>
标签,同样表示一个 Drawable 集合,每个 Drawable 都有一个等级(level)的概念。
TransitionDrawable
对应于<transition>
标签,用于两个 Drawable 之间的淡入淡出效果。
InsetDrawable
对应<inset>
标签,可将其它 Drawable 内嵌到自己当中,并可以在四周留出一定的间距。
当 View 希望背景比自己的实际区域小时,可采用。
ScaleDrawable
对应<scale>
标签,可根据自己等级(level)将指定的 Drawable 缩放到一定比例。
ClipDrawable
对应<clip>
标签,可根据自己当前等级(level)来裁剪另一个 Drawable。
自定义 Drawable
Drawable 的工作原理其核心就是 draw()。可通过重写 Drawable 的 draw() 来自定义 Drawable。
1 | /** |
链接
参考资料:
Android 开发艺术探索