1、BitmapDrawable:
通过XML来描述BitmapDrawable可以设置更多效果。
属性有
<?xml version = "1.0" encoding = "utf-8"?>
<bitmap
xmls:android="http://schemas.android.com/apk/res/android"
android:src="@[package:]drawable/drawable_resource"
android:antialias=["true"|"false"]//抗锯齿
android:dither=["true"|"false"]//开启抖动效果
android:filter=["true"|"false"]//过滤效果
android:gravity
android:tileMode /> //平铺模式
2、ShapeDrawable:
shape有rectangle(矩形)、oval(椭圆)、line(横线)、ring(圆环),line和ring必须指定<stroke>标签指定线的宽度和颜色信息。
属性:
<?xml version = "1.0" encoding = "utf-8"?>
<shape
xmls:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle"|"oval"|"line"|"ring"]>
<corners/> //四个角的角度,只适应矩形shape
<gradient/> //渐变效果
<padding/> //包含这个drawable的view的空白
<size/> //大小,width&height
<solid/> //纯色填充
<stroke/> //shape的描边
</shape>
3、LayerDrawable:
一种层次化的Drawable集合。将不同Drawable放置在不同的层上面从而达到一种叠加后效果。
<?xml version = "1.0" encoding = "utf-8"?>
<layer-list
xmls:android="http://schemas.android.com/apk/res/android"
<item
android:drawable=""
android:id=""
android:top=""//drawable相对于view上下左右偏移量
android:right=""
android:bottom=""
android:left=""/>
</layer-list>
每个Item都表示一个Drawable。切下层的item会覆盖上面的item。
4、StateListDrawable
就是<selector>,Drawable集合,根据View的状态选择合适Drawable
5、LevelListDrawable
对应<level-list>标签,Drawable集合,集合中每个Drawable对应一level,可通过setLevel设置不同等级切换具体drawabel。每个drawable的
范围都是0-10000。
6、TransitionDrawable
<transition>标签,用户实现两个Drawable之间淡入淡出效果。
TransitionDrawable drawable = (TransitionDrawable) mBtn.getBackground();
drawable.startTransition(5000);
7、InsetDrawable
<inset>标签,将其他Drawable内嵌到自己当中,并可在四轴留有边距。
8、ScaleDrawable
对应于<scale>标签,可根据等级指定Drawable缩放到一定比例。等级不可以为0,否则不可见。
ScaleDrawable drawable = (ScaleDrawable) mBtn.getBackground();
drawable.setLevel(8000);
scaleDrawable级别越大就越没缩放效果,1~10000范围。必须设置setLevel否则为0。
scaleDrawable的XML定义缩放比例越大,内部Drawable就越小
9、ClipDrawabel
<clip>标签,根据自己当前的level来裁剪另外一个Drawable。可以设置等级来裁剪区域大小。