Android 各种Drawable子类简析

Drawable分类:

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

BitmapDrawable:
属性src,就是图片资源的ID,tileMode属性可以将一张图片变成如下的效果。
这里写图片描述
NinepatchDrawable和bitmapdrawable属性差不多。

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

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

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表示不裁剪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值