Drawable分类

android中的drawable一般用于设置View的背景,我们常用xml定义的drawable的有ShapeDrawable,StateListDrawable,下面我们介绍一下android中的drawable,这对我们自定义颜色图片和复用图片非常有用

BitmapDrawable
xml标签为bitmap
用于设置图片属性,开发中一般不常用
可以设置图片的位置gravity(当图片比空间小时),抗锯齿是否开启antialias,抖动效果是否开启dither,平铺模式tileMode

NinePatchDrawable
xml标签为nine-patch
和bitmapDrawable一样,也是用于引用一张图片,这里引用的是.9的图片

ShapeDrawable
xml标签为shape
通过颜色构建的图形,可以用来构建纯色的或者渐变色的图形
shape标签下可以设置图片的形状(rectangle矩形、oval椭圆、line横线、ring圆环)
corner标签下可以设置圆角的半径
gradient标签设置渐变效果
    angle-渐变的角度,必须是45的倍数,0是默认值,90表示从下到上
    centerX-渐变中心的横坐标
    centerY-渐变中心的纵坐标
    startColor-渐变起始色
    centerColor
    endColor
    gradientRadius-渐变半径
    type-渐变类型,有linear线性渐变、radial 径向渐变需要设置gradientRadius

LayerDrawable
xml标签为layer-list
进行过地图开发的都知道这是一个图层Drawable,layer表示的是一个覆盖图层,所以这个drawable是可以进行图片重叠的。
是一个层次化drawable的集合,可以进行drawable的覆盖和重叠,里面的每一个item都表示一个drawable。可以在drawable中引用图片资源,也可以自定义shape。通过层级的覆盖可以做出一些意想不到的图片。

StateListDrawable
xml标签为selector
最常见的一种drawable,button中用到的selector
不仅可以用于button的点击效果,一些checkbox和radiobutton的选择效果,还能用于字体颜色的设置

LevelListDrawable
xml标签为level-list
每一个item表示一个图片,但是设置有maxLevel和minLevel范围为0-10000
假如我们需要获取手机电池通过电池直观显示,我们可以通过获取到的电量的多少来设置电池的图片,此时可以用levelListDrawable,可以省去很多繁琐的电量判断然后设置不同的电量图片。
可以通过image.setImageLevel(number),这个方法会自动匹配level-list中的item,当number位于minlevel和maxlevel之间时就会显示这个item中的图片。

TransitionDrawable
xml标签为transition
用于实现两个drawable之间的淡入淡出效果。可用于button点击的点击效果,淡入淡出。
startTransition和reverseTransition

InsetDrawable
xml标签为inset
内嵌drawable,可以将drawable内嵌到自己当中,在一个图片周围留出一定的间距。
当一个View希望自己的背景比自己的实际区域要小的时候,可以采用。我们也可以通过padding来实现这种效果,但是padding也会将内容进行padding。
开发中用到的少,因为我们可以通过其他的方法达到同样的效果,但是用insetDrawable实现会相对简单一些


ScaleDrawable
xml标签为scale,可以对指定的图片进行缩放属性的设定
scaleHeight=70%表示的是把高度变为原来的30%而不是70%
初始化的时候还必须scaleDrawable。setLevel(1-10000),设置为0的时候,表示不可见。默认值就是0,所以必须进行手动设置

ClipDrawable
xml标签为clip
可以对图片进行裁剪操作,设置裁剪属性后,图片将被裁剪
通过裁剪属性clipOrientation表示裁剪方向,horizontal表示的是剪刀为竖直方向进行剪裁,将图片的width剪短,vertical剪刀为水平方向,将图片的height剪短。
还有一个属性为gravity,剪裁后需要保证gravity设置的属性还是保持正确的,所以当gravity设置为bottom,cliporientation设置为vertical的时候是从上面剪去,保证裁剪后还是bottom属性。
setLevel(0-10000),表示的是裁剪范围,0表示完全裁剪,也就是剪得看不到了,10000表示不裁剪,显示完全,所以设置8000的时候表示的是裁剪20%

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值