什么是drawable? drawable和bitmap有什么不同?
Drawable表示的是一种可以在Canvas上绘制的抽象概念。drawable是一个抽象类
Bitmap对象是一张bitmap格式image的表示 Drawable对象是“那些能够在其上面图画的任意对象”,
它也许是一个bitmap对象,也可能是一个solid color、一个其他Drawable对象的集合,亦或是某种结构
Drawable的分类
BitmapDrawable 表示一张图片
android:src 就是图片资源
android:antialias 是否开启图片的抗锯齿功能
android:dither 是否开启抖动效果
android:filter 是否开启过滤效果
android:gravity 当图片小于容器的尺寸时 此选项用于对图片的定位;
android:mipMap 这是一种图片的相关的处理技术
android:tileMode 平铺模式 开启后 gravity 属性会被忽略;
ShapeDrawable 通过颜色来构建图形;
android:shape 表示图形的形状 默认为矩形 可以有rectangle(矩形) oval(椭圆) line (横线)ring(圆形)四个选项 line 和ring必须要通过<Stroke>标签来指定线的 宽度和颜色等信息
<corners>表示shape的四个角的角度 只使用于矩形 px表示
<gradient> 它和<solid>是互相排斥的 solid表示的是纯色填充gradient表示的是渐变效果
<stroke>表示描边
<padding> 表示空白
<size>表示 shape的大小
LayerDrawable 表示层次化的drawable集合
对应的xml标签是<layer-list> 一个layer-list中可以有多个item没一个item表示一个drawable;
StateListDrawable 它也表示的是drawable的集合 每个drawable对应着view的一种状态对应的是<selector>标签
android:constantSize 默认false 表示stateListDrawable的固有大小是否会随着状态的改变而改变
android:dither 是否开启抖动效果 默认为true
android:variablePadding 不建议开启此项 默认false;
LevelListDrawable 同样表示drawable的集合 对应xml标签<level-list>
集合中的没一个drawable都有一个等级的概念 根据不同的level切换不同的drawable;
TransitionDrawable 表示两个drawable间淡入淡出的效果 对应标签<transition>
insetDrawable 对应<inset>标签 可以将其他drawable内嵌到自己当中 并可以在四周留出一定的间距
ScaleDrawable 对应<scale>标签 它可以根据自己的等级将指定的drawable 缩放到一定的比例
ClipDrawable 对应<clip>标签 它可以根据自己的等级来裁剪另一个drawable 裁剪的方向可以通过属性控制
BitmapShader
BitmapShader 是Shader的子类,可以通过Paint.setShader(Shader shader)进行设置
BitmapShader,构造方法:
mBitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP);
参数1:bitmap
参数2,参数3:TileMode;
TileMode的取值有三种:
CLAMP 拉伸
REPEAT 重复
MIRROR 镜像
Xfermode