Android中常用的Drawable

Drawable有很多种,它们都表示一种图像的概念,但它们又不全是图片,通过颜色也可以构造出各式各样的图像的效果。一般来说,Drawable是没有大小概念的,当用作View的背景时,Drawable会被拉伸至View的同等大小。

Android中常用的Drawable有:

1. BitmapDrawable

—— 表示一张图片


  • android:src
    图片的资源id
  • android:antialias
    是否开启图片抗锯齿功能,能让图片变平滑,同时也会在一定程度上降低图片清晰度(可以忽略)
  • android:dither
    是否开启图片抖动效果,让高质量的图片在低质量的屏幕上还能保持较好的显示效果
  • android:filter
    是否开启过滤效果,当图片被拉伸或者被压缩时,可以保持较好的显示效果
  • android:gravity
    当图片小于容器尺寸时,设置此选项对图片进行定位
  • android:mipMap
    纹理映射,图像相关处理技术,默认值为false(不常用)
  • android:titleMode
    设置平铺模式,默认disabled,repeat表示简单的水平和竖直方向上的平铺效果;mirror表示水平和竖直方向上的镜面投影效果;clamp将图片四周的像素扩展到周围区域

2. ShapeDrawable

—— 通过颜色来构造的图形



      

      

      

      

      

      

  • android:shape
    表示图形的形状,rectangle(矩形)、oval(椭圆)、line(横线)和ring(圆环)


  • 表示shape四个角的角度


  • 表示shape的渐变效果,angle是渐变角度,centerX是渐变中心点的横坐标,centerY是渐变中心点的纵坐标,startColor是渐变的起始色,centerColor是渐变的中间色,endColor是渐变的结束色,gradientRadius是渐变半径,type为渐变的类别


  • 表示纯色填充


  • Shape的描边,dashWidth是组成虚线的线段的宽度,dashGap是组成虚线的线段间的间隔

用途:如画出带有圆角的按钮

带有圆角的按钮

3. LayerDrawable

—— 表示一种层次化得Drawable集合,通过将不同的Drawable放在不同的层上面从而达到一种叠加后的效果


      

      
        ......


用途:如画出背景只有下划线的EditText(实现原理:将带有界面背景颜色的层覆盖在带有EditText下划线颜色的层上面,再设置bottom属性)

背景只有下划线的EditText

4. StateListDrawable

—— 表示的也是一种Drawable集合,每个Drawable对应着View的一种状态,系统会根据View的状态来选择合适的Drawable


      

      
        ......


  • android:constantSize
    决定StateListDrawable的大小是否随着其状态的改变而改变,true的话则表示保持不变,固有大小为所以drawable的最大值,false则会随着状态的改变而改变,默认是为false

  • android:dither
    是否开启抖动效果

  • android:variablePadding
    决定StateListDrawable的padding是否随着其状态的改变而改变,true的话则表示保持不变,固有大小为所以drawable的padding的最大值,false则会随着状态的改变而改变,默认是为false

用途:如实现按钮按下与松开时候的不同效果

5. LevelListDrawable

—— 表示的也是一种Drawable集合,每个Drawable都要一个等级(level)概念,系统会根据不同的等级切换不同的drawable


      

      
        ......


每个item对应一个Drawable,并且有相应的等级范围,在minlevel和maxlevel之间的等级会对应此item中的Drawable

用途:如构造状态切换按钮

Android中常用的Drawable_第1张图片
状态切换按钮

当然还有TransitionDrawable、InsetDrawable、ScaleDrawable和ClipDrawable等,就不一一介绍了,这里只介绍一些常用的,有兴趣的同学可以继续深入了解,哈哈哈。

你可能感兴趣的:(Android中常用的Drawable)