Drawable是一种可以在Canvas上进行绘制的抽象概念。 最常见的图片和颜色都可以是Drawable
- Drawable的层级关系
- Drawable的分类
- 自定义Drawable(优点,简单比自定义View成本低)
Drawable简介
Drawable常用来最为View的背景,通常是通过XML来定义。 Drawable的内部宽高参数比较重要,通过getIntrinsicWidth
和getIntrinsicHeight
方法获取。但这并不是Drawable真正的大小。比如因为作为View的背景时Drawable会被拉伸。 实际的区域大小(宽高)可以通过getBounds
方法获得。
Drawable的分类
- BitmapDrawable 最简单的Drawable,表示一张图片
- ShapeDrawable 通过颜色来构造的图形,分为纯色和渐变效果。
- LayerDrawable 对应XML标签 层次化的Drawable集合,多个Drawable的叠加效果。
- StateListDrawable 对应标签 是一个Drawable集合 根据View的状态来选择合适的Drawable。主要用于设置可单击的View背景。例如导航栏的选中状态。
- LevelListDrawable 对应标签 是一个Drawable集合 可根据不同的等级切换对应的Drawable.
- TransitionDrawable 对应标签 用于实现Drawable之间的淡入淡出。
- InsetDrawable 对应标签 可以将其他Drawable内嵌到其中
- ScaleDrawable 对应标签 根据自己的等级指定Drawable的缩放比例
- ClipDrawable 对应于标签 根据自己的等级来裁剪另一个Drawable。
自定义Drawable
Drawable的使用范围:
- 作为ImageView的图像来显示
- 作为View的背景
自定义的Drawable无法再xml中使用。