Android下的Drawable使用


Drawable表示一种可绘制的内容,可以由图片或者颜色组成.Android下的Drawable有BitmapDrawable、GradientDrawable、LayerDrawable等等

1.BitmapDrawable

它表示一张图片,我们可以直接将图片放在drawable目录下,该图片就可以直接作为drawable引用,当然也可以用xml的方式来描述一张图片.

<?xml version="1.0" encoding="utf-8"?>



tileMode = "clamp"

tileMode = "repeat"

tileMode = "mirror"

tint = "#39c5bb" + tintMode = "multiply"

2.ShapeDrawable

ShapeDrawable是指在xml文件中的shape标签,实际对应的类是 GradientDrawable,它表示一个图形.

跟BitmapDrawable一致的属性就不详细说明了.

<?xml version="1.0" encoding="utf-8"?>

    //描边,边宽度,边颜色,line和ring必须设置这个,否则无法正常显示
    //dashWidth需要配合dashGap一起使用,两个值都不为0,会显示虚线效果
    
    //填充色,决定了形状的整体颜色
    
    //指定形状的宽高,未指定size,getIntrinsicWidth()等方法返回-1
    
    //可以实现圆角效果的半径,对于矩形,则四个角都会改变,也可以单独设置两个角的圆角效果
    //bottomLeftRadius、bottomRightRadius...
    
    //渐变色,该节点和solid冲突,只能有一个,具体效果见下图
    //angle:会影响渐变的方向,该值需要是45的倍数
    //centerColor:渐变的中间色
    //startColor:渐变的起始色
    //endColor:渐变的结束色
    //type:渐变的类型,取值:sweep(扫描渐变,想象一下雷达)、radial(径向渐变)、linear(线性渐变,默认)
    //gradinetRaduis:只有type = "radial"有效,渐变半径
    //useLevel:一般false,作为StateListDrawable为true
    //centerY:渐变中心点的Y坐标,会影响渐变效果
    //centerX:渐变中心点的X坐标,会影响渐变效果
    


3.LayerDrawable

它表示一个拥有层次化的Drawable集合,对应标签是layer-list.它可以包含多个drawable,通过LayerDrawable可以实现一些叠加的效果.

比如:

对于上图的效果要设置给ImageView的src属性才能看到效果.

<?xml version="1.0" encoding="utf-8"?>

    //item 表示一个drawable对象,也可以通过android:drawable属性来引用一个现有drawable对象
    //
    
        //可以设置一个drawable的旋转角度,pivotY,pivotX旋转的偏移量
        
            
                
                
		//这里设置的width和height对于View来说是没有任何意义的,它会按照View的大小来自适应
                
            
        
    

    
        
            
                
                
                
            
        
    

    
        
            
                
                
                
            
        
    

    
        
            
                
                
                
            
        
    

比较常用的属性有android:left、android:top、android:right、android:bottom,分别表示drawable相对于View的上下左右的偏移量.

待更新...