Android 各种Drawable子类简析

Drawable分类:

Drawable是一个抽象类,其他的drawable都是他的子类,包括:BitmapDrawable、ShapeDrawable等等,drawable并没有实际的宽和高,一般作为view的背景时,drawable就会被拉伸到view的大小。

BitmapDrawable:
属性src,就是图片资源的ID,tileMode属性可以将一张图片变成如下的效果。
Android 各种Drawable子类简析_第1张图片
NinepatchDrawable和bitmapdrawable属性差不多。

ShapeDrawable;shape属相; rectangle oval ring line四种ring属性比较特殊,并且当希望画一个圆环时,ring属性的uselevel必须设置为false,如下:

    android:shape="ring"
    android:innerRadius="100dp"
    android:thickness="10dp"
    android:useLevel="false">
    "10dp"
        android:color="#ad7997"/>

Stroke属性是用来描边的,通过设置dashgap和dashwidth可以制作出虚线效果,前提是必须2个属性均不能为0.

layerDrawable:意思就是可以多张图片叠层在一起,后面的图片会把前面的图片覆盖,可以制作的效果如,输入框(其底部有一条彩色的输入横线),其中的left/right/top属性指的是drawable相对于view的偏移量。

Statelistdrawable:当控件处于不同状态的时候,显示不同的drawable.属性constantSize指的是其固有大小是否随着view状态的改变而改变。

LevellistDrawable:里面也是放多张drawable,可以通过设置其level,从而显示不同的drawable

TransitionDrawable:实现2个drawable之间的淡入淡出效果,需要在代码里面调用drawable.startTransition(设置淡入淡出的时间)。

InsetDrawable:当一个view希望自己的背景图片小于view自身时,那么就可以用insetdrawable作为自己的背景图片。属性inset就是凹进去的值。

ScaleDrawable:用于改变draw able大小比例的一种drawable,scaleHeight/scaleWidth的值表示将原图缩放为原图大小的1-值.注意点:如果仅仅是将scaledrawable设置为view为背景或者src,这样scaledrawable是不会显示的,还需要在代码中设置scaledrawable 的level(1-10000)任意值即可。

Clipdrawable:可以将一张drawable进行裁剪,可以指定裁剪的方向,用法注意:需要在代码中获得这个clicpdrawable,然后通过设置这个drawable 的level来进行裁剪,值得范围是0-10000,0表示完全裁剪,10000表示不裁剪。

你可能感兴趣的:(Android学习)