一、简介
Drawable表示一种可以在Canvas上进行绘制的抽象的概念,它有很多种,常见的如颜色和图片都可以是一个Drawable。
其可以理解为:图像、它不全是图片,通过颜色也可以构造出各种各样的图片效果,它一般就是当做View的背景使用,他有两种方式,一种是通过XML,一种是通过代码的方式。
优点
- 使用简单,比自定义View的成本要低
- 非图片类型的Drawable占空间较小,不存在屏幕适配的问题。
二、Drawable 的分类
Drawable是一个抽象类,它是所有Drawable对象的基类,每个具体的Drawable都是它的子类,比如ShapeDrawable、BitmapDrawable等。
Drawable的层次关系如下:
子类说明
No | xml标签 | Class类 | 含义 |
---|---|---|---|
1 | shape | ShapeDrawable | 特定形状,模型的图样 |
2 | selector | StateListDrawable | 不同状态选择不同的图样 |
3 | layer-list | LayerDrawable | 层叠图样 |
4 | level-list | LevelListDrawable | 不同程度图样 |
5 | transition | TransitionDrawable | 渐变图样 |
6 | ripple | RippleDrawable | 波纹图样 |
7 | inset | InsetDrawable | 内嵌图样 |
8 | scale | ScaleDrawable | 缩放图样 |
9 | clip | ClipDrawable | 剪切图样 |
10 | rotate | RotateDrawable | 旋转图样 |
11 | animation-list | AnimationDrawable | 动画效果 |
12 | bitmap | BitmapDrawable | 图片图样 |
13 | nine-patch | NinePatchDrawable | .9图 |
三、自定义Drawable
通常我们没有必要去自定义Drawable,这是因为自定义的Drawable无法在XML中使用,这就降低了自定义Drawable的使用范围。
自定义Drawable主要是通过重写Drawable的draw方法来实现,例如实现图片圆角、圆形、椭圆形,可以继承BitmapDrawable,重写draw方法实现。
参考资料
《Android 开发艺术探索》
https://www.cnblogs.com/Jeely/p/11045042.html
https://blog.csdn.net/alwaysGoalong/article/details/77894409
版权声明:本文为shipingxue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。