本文为博主原创文章,转载请注明出处:http://blog.csdn.net/czd3355/article/details/52624498
本系列的知识主要通过学习《Android开发艺术探索》
一、简介
Drawable有很多种,它们都表示一种图像概念,但它们又不全是图片,通过颜色也可以构造出各种各样的图像的效果。在实际开发中Drawable常被用来作为View的背景使用(在XML中,控件使用android:background=”@drawable/esources_id”属性来引用Drawable)。Drawable一般都用XML来定义,当然也可以用java代码来定义,不过比较复杂。
注意:Drawable的内部宽高可以通过getIntrinsicWidth和getIntrinsicHeight来获取。但不是所有的Drawable都有内部宽高,比如一张图片所形成的Drawable,它的内部宽高就是图片的宽高,但一个颜色所形成的Drawable,它就没有内部宽高的概念。同时,Drawable的内部宽高不等同于它的大小,一般来说,Drawable是没有大小概念的。当被用作View背景时,Drawable会被拉伸至View等大。
二、优点
- 使用简单,比自定义View的成本低
- 非图片类型的Drawable占用空间较小,对减小apk的大小很有帮助
三、分类
- BitmapDrawable
- NinePatchDrawable
- ShapeDrawable
- LayerDrawable
- StateListDrawable
- LevelListDrawable
- TransitionDrawable
- InsetDrawable
- ScaleDrawable
- ClipDrawable
- 自定义Drawable