美文网首页Android艺术探索笔记
第六章 Android 的 Drawable

第六章 Android 的 Drawable

作者: ByteStefan | 来源:发表于2019-01-15 23:17 被阅读0次
  1. BitmapDrawable
<bitmap
    //图片资源id
    android:src = "@{package:}drawable/drawable_resource"
    //是否开启图片抗锯齿。开启后图片变平滑,同时会一定程度上降低图片清晰度(推荐开启)
    android:antialias = {"true" | "false"}
    //是否开启抖动效果(推荐开启)
    android:dither = {"true" | "false"}
    //是否开启过滤效果。图片尺寸被拉伸或者压缩时,开启可保持较好的显示效果(推荐开启)
    android:filter = {"true" | "false"}
    //图片小于容器尺寸时,设置图片的定位
    android:gravity = {"top" | "bottom" | "left" | "right" | "center_vertical" |
                        "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                        "center" | "fill" | "clip_vertical" | "clip_horizontal"}
    //纹理映射(默认为false,不需要改动)
    android:mipMap = {"true" | "false"}
    //平铺模式。设置之后gravity属性会被忽略。disabled 默认值,clamp 图片四周像素扩展到周围区域,repeat 水平和竖直方向平铺,mirror 水平和竖直方向的镜面投影
    android:titleMode = {"disabled" | "clamp" | "repeat" | "mirror"}
/>                    
  1. ShapeDrawable
<shape
    //图形形状 rectangle 矩形,oval 椭圆,line 横线,ring 圆环
    // ring 形状有5个特殊属性:innerRadius 内半径,thickness 圆环厚度,外半径减内半径,innerRadiusRatio 内半径占整个 Drawable 宽度的比例,默认9,
    //thicknessRatio 厚度占整个 Drawable 宽度的比例,默认3,useLevel 一般为false,除非被当做 LevelListDrawable 使用
    android:shape = {"rectangle" | "oval" | "line" | "ring"}>
    // shape 的四个角的角度,只适用于矩形
    <corners
        android:radius = "integer"
        android:topLeftRadius = "integer"
        android:topRightRadius = "integer"
        android:bottomLeftRadius = "integer"
        android:bottomRightRadius = "integer"/>
    //渐变效果,与 solid 互斥
    <gradient
        //渐变角度,默认为0,其值必须为45倍数,0表示从左到右,90表示从下到上
        android:angle = "integer"    
        //渐变中心横坐标
        android:centerX = "integer"
        //渐变中心纵坐标
        android:centerY = "integer"
        //渐变的中间色
        android:centerColor = "integer"
        //渐变的结束色
        android:endColor = "color"
        //渐变半径,仅当 type="radial" 时有效
        android:gradientRadius = "integer"
        //渐变的起始色
        android:startColor = "color"
        //渐变类型 line 线性,radial 镜像,sweep 扫描线
        android:type = {"linear" | "radial" | "sweep"}
        //一般为 false,当作为 StateListDrawable 使用时为 true
        android:useLevel = {"true" | "false"}/>
    //空白,表示包含它的 View 的空白
    <padding
        android:left = "integer"
        android:right = "integer"
        android:top = "integer"
        android:bottom = "integer"/>
    //shape 的大小
    <size
        android:widht = "integer"
        android:height = "integer"/>
    //纯色填充
    <solid
        android:color = "color"/>
    //描边
    <stroke
        //描边宽度
        android:width = "integer"
        //描边颜色
        android:color = "color"
        //虚线的线段宽度
        android:dashWidth = "integer"
        //虚线线段间的间隔
        android:dashGap = "integer"/>  
/shpe>                     
  1. LayerDrawable
    层次化的 Drawable 集合
<layer-list>
    <item
        android:drawable = "@{package:}drawable/drawable_resource"
        android:id = "@{+}{package:}id/resource_name"
        android:top = "dimension"
        android:right = "dimension"
        android:bottom = "dimension"
        android:left = "dimension"/>
</layer-list>        
  1. StateListDrawable
<selector
    //StateListDrawable 的固有大小是否不随着其状态改变而改变,默认 false
    android:constantSize{"true" | "false"}
    //是否开启抖动效果,默认 true
    android:dither = {"true" | "false"}
    //StateListDrawable 的 padding 是否随着其状态改变而改变,默认 false
    android:variablePadding = {"true" | "false"}>
    <item
        android:drawable = "@[package:]drawable/drawable_resource"
       //按下状态,未松开
       android:state_pressed = ["true" | "false"]
       //已获得焦点
       android:state_focused = ["true" | "false"]
       android:state_hovered = ["true" | "false"]
       //选择了 View
       android:state_selected = ["true" | "false"]
       android:state_checkable = ["true" | "false"]
       //选中了 View,一般适用于 CheckBox 这类在选中和非选中状态之间进行切换的 View
       android:state_checked = ["true" | "false"]
       //View 当前处于了用状态
       android:state_enabled = ["true" | "false"]
       android:state_activated = ["true" | "false"]
       android:state_state_window_focused = ["true" | "false"]
  1. LevelListDrawable
    当作为背景时,可通过 Drawable 的 setLevel 方法设置不同等级来切换 Drawable;当作为 ImageView 的前景 Drawable 时,可通过 ImageView 的 setImageLevel 切换 Drawable。
<level-list>
    <item
        android:drawable = "@drawable/drawable_resource"
        android:maxLevel = "integer"
        android:minLevel = "integer"/>
</level-list>        
  1. TransitionDrawable
    实现两个 Drawable 之间的淡入淡出效果,通过 startTransition 和 reverseTransition 实现效果以及它的逆过程。
<transition>
    <item
        android:drawable = "@[package:]drawable/drawable_resource"
        android:id = "@[+][package:]id/resource_name"
        android:top = "dimension"
        android:right = "dimension"
        android:bottom = "dimension"
        android:left = "dimension"
  1. InsetDrawable
    可以将其他 Drawable 内嵌到自己当中,并在四周留出一定的间距。可实现一个 View 的背景比自己的实际区域小的效果。
<inset
    android:drawable = "@drawable/drawable_resource"
    //顶部、底部、左边、右边内凹的大小
    android:insetTop = "dimension"
    android:insetBottom = "dimension"
    android:insetRight = "dimension"
    android:insetLeft = "dimension"/>
  1. ScaleDrawable
    可根据自己的等级将指定的 Drawable 缩放到一定比例。必须设置等级在0到10000之间。
<scale
    android:scaleGravity = ["top" | "bottom" | "left" | "right" | "center_vertical" |
                            "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                            "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    // Drawable 宽高德缩放比例
    android:scaleHeight = "percentage"
    android:scaleWidth = "percentage"/>                        
  1. ClipDrawable
    可根据等级裁剪 Drawable,裁剪方向可通过 clipOrientation 和 gravity 属性共同控制。等级越大,裁剪范围越小
<clip
    android:drawable = "@drawable/drawable_resource"
    android:clipOrientation = ["horizontal" | "vertical"]
    android:gravity = ["top" | "bottom" | "left" | "right" | "center_vertical" |
                            "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                            "center" | "fill" | "clip_vertical" | "clip_horizontal"]
ClipDrawable-gravity.png

相关文章

网友评论

    本文标题:第六章 Android 的 Drawable

    本文链接:https://www.haomeiwen.com/subject/rkaudqtx.html