Drawable 简介
表示图像的概念,可以 XML 定义,也可以使用代码创建 Drawable 对象。Drawable 可以通过 getIntrinsicWidth
和 getIntrinsicHeight
获取内部宽高,但并不是所有的 Drawable 都有内部宽高,如 BitmapDrawable 的内部宽高就是图片的宽高,再比如 ShapeDrawable 就没有内部宽高。
Drawable 的分类
BitmapDrawable
标签为 bitmap
src
图片 ID,也可以是 .9 图片antialias
抗锯齿dither
开启抖动效果filter
开启过滤效果,对图片裁剪缩放处理gravity
图片定位tileMode
平铺模式
ShapeDrawable
标签为 shape
android:shape
图形形状,rectangle(矩形),line(横线),oval(椭圆),ring(圆环)。默认是矩形。<corners>
矩形四个角角度<gradient>
渐变填充<solid>
纯色填充<stroke>
shape 的描边<padding>
包含其 View 的空白<size>
设置 ShapeDrawable 的宽高,但其作为背景还是会被拉伸或缩小
LayerDrawable
标签为 layer-list
,表示层次化的 Drawable,有很多 <item>
标签,<item>
标签可以包含其他任意的 Drawable
StateListDrawable
标签为 selector
,表示 Drawable 集合,根据 View 状态选择合适的 Drawable。如 Button 状态改变。
LevelListDrawable
标签为 level-list
,表示 Drawable 集合,根据不同的 Level,LevelListDrawable 切换不同的 Drawable。如电量、WiFi信号强度等。
TransitionDrawable
标签为 transition
,实现两个 Drawable 之间淡入淡出效果。
InsetDrawable
标签为 inset
,将其他 View 嵌入到自己当中,并且留一定距离。
ScaleDrawable
标签为 scale
,根据自己的 Level 将 Drawable 缩放到一定的比例。
ClipDrawable
标签为 clip
,根据自己 Level 来裁剪另外一个 Drawable。
自定义 Drawable
核心就是重新 Drawable 的 draw 方法,但是自定义后没法在 XML 中自定义。