Drawable表示的是一种可以在Canvas上进行绘制的抽象的概念。
1、Drawable简介
Drawable是一个抽象类,是所有Drawable对象的基类,每个具体的Drawable都是它的子类,比如ShapeDrawable、BitmapDrawable等。
通过getIntrinsicWidth和getIntrinsicHeight这两个方法可以获取到Drawable的内部宽/高。但并不是所有的Drawable都有内部宽/高,比如一张图片所形成的Drawable,它的内部宽/高就是图片的宽/高,但是一个颜色形成的Drawable,它没有内部宽/高。Drawable内部宽/高不等同于它的大小。Drawable是没有大小概念的。
2、Drawable分类
-
BitmapDrawable
-
ShapeDrawable
-
LayerDrawable
对应的XML标签是
- StateListDrawable
对应于
系统会根据View当前的状态从selector中选择对应的item,每个item对应着一个具体的Drawable,系统按照从上到下的顺序查找,直至查找到第一条匹配的item。一般来说,默认的item都应该放在selector的最后一条并且不带任何状态,这样当上面的item无法匹配View的当前状态,系统会选择默认的item。
- LevelListDrawable
对应于
- TransitionDrawable
对应于
- InsetDrawable
对应于
- ScaleDrawable
ScaleDrawable对应于
- ClipDrawable
对应于