Android之Drawable简单入门(三)

Drawable使用介绍

转载自:http://blog.csdn.net/feather_wch/article/details/79124608

BitmapDrawable的使用

使用示例

<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="你的图片"
    android:antialias="true"
    android:dither="true"
    android:filter="true"
    android:gravity="center"
    android:mipMap="false"
    android:tileMode="disabled"
        />

相关属性描述

属性描述
src图片资源ID
antialias图片抗锯齿-图片平滑,清晰度降低
dither开启抖动效果-用于高质量图片在低质量屏幕上保存较好的显示效果(不会失真)
filter开启过滤-在图片尺寸拉伸和压缩时保持较好的显示效果
mipMap纹理映射-图像处理技术
tileMode平铺模式-repeat单纯重复、mirror镜面反射、clamp图片四周像素扩散
gravity将图片放在容器的相对位置(top/bottom/left/right/center)

ShapeDrawable的作用

使用示例

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners
        android:radius="10dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"/>
    <gradient
        android:angle="45"
        android:centerX="30"
        android:centerY="30"
        android:centerColor="@color/colorAccent"
        android:endColor="@color/colorPrimary"
        android:startColor="@color/colorPrimaryDark"
        android:gradientRadius="20"
        android:type="linear"
        android:useLevel="true" />
    <padding
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp" />
    <size
        android:width="200dp"
        android:height="200dp" />
    <solid
        android:color="@color/colorPrimary"/>
    <stroke
        android:width="10dp"
        android:color="@color/colorAccent"
        android:dashWidth="5dp"
        android:dashGap="3dp"/>
</shape>

相关属性标签描述

shape(暂时只介绍这一个属性):限定图形的形状,可以取值有rectangle、oval、line、ring

值的注意的是:corners标签对应于矩形;linering通过stroke指定线的宽度和颜色; ring圆环有五个特殊的shape属性

标签属性描述
cornersradius整体设置四个边角的角度
topLeftRadius单独设置左上角的角度
topRightRadius单独设置右上角的角度
bottomLeftRadius单独设置左下角的角度
bottomRightRadius单独设置右下角的角度
gradientangle设置渐变的角度,其值必须是45的倍数,逆时针测量
centerX定义渐变中心的x坐标
centerY定义渐变中心的y坐标
centerColor定义渐变中心开始的颜色
endColor定义渐变的结束颜色
startColor定义渐变的开始颜色
startColor定义渐变的渐变半径
type定义渐变的类型,一般为radial或者sweep
useLevel如果设置为true,表示此渐变会基于一个级别来绘制其颜色
paddingleft设置元素左边的内边距大小(单位:dp)
top设置元素上边的内边距大小(单位:dp)
right设置元素右边的内边距大小(单位:dp)
bottom设置元素底边的内边距大小(单位:dp)
sizeheight设置元素高度
width设置元素宽度
solidcolor设置元素的填充颜色,和gradient标签互斥
stockwidth设置描边的宽度
dashWidth定义描边时虚线的每一段长度
color设置描边的颜色
dashGap定义描边时虚线的每一段间隔

LayerDrawable的使用(layer-list)

使用示例

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid
                android:color="#0ac39e"/>
        </shape>
    </item>

    <item
        android:bottom="6dp">
        <shape android:shape="rectangle">
            <solid
                android:color="#FFFFFF"/>
        </shape>
    </item>

    <item
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp">
        <shape android:shape="rectangle">
            <solid
                android:color="#FFFFFF"/>
        </shape>
    </item>
</layer-list>

相关标签的描述

<layer-list> 是用于在 Drawable 资源中定义一个层的列表的标签。它允许你将多个 Drawable 元素堆叠在一起,以创建一个复合的图形效果。<layer-list> 标签本身并没有直接的属性,但其中的子元素(通常是 <item> 标签)具有一些属性来定义每一层的特性。

属性描述
drawable指定要作为当前层显示的Drawable资源,可以是前面的那些Drawable资源
id为当前层指定唯一id,允许你可以在代码中引用对应的层
top设置当前层顶部与容器顶部之间的偏移量
right设置当前层右侧与容器顶部之间的偏移量
left设置当前层底部与容器顶部之间的偏移量
bottom设置当前层左部与容器顶部之间的偏移量
width设置当前层的宽度
height设置当前层的宽度
gravity控制当前层内的内容如何在其空间内定位和对齐

StateListDrawable的使用(selector)

<selector> 标签通常用于定义状态列表(StateList Drawable),它允许你根据视图(如按钮、菜单项等)的不同状态来指定不同的Drawable资源。<selector> 标签内包含多个 <item> 标签,每个 <item> 标签定义了一个状态以及与之对应的Drawable资源。

使用示例

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize="false"    //StateListDrawable的固有大小是否根据状态而改变,默认false=根据状态而改变
    android:dither="true"           //是否开启抖动-让高质量图片在低质量屏幕上依旧效果好,默认true开启
    android:variablePadding="false" //padding是否根据状态的改变而改变,不建议开启(false)
    >
    <item android:state_pressed="true"  //Button被按下后却没有松开的状态
        android:drawable="@color/colorAccent"/>
    <item android:state_focused="true"  //View获取了焦点
        android:drawable="@color/colorPrimary"/>
    <item android:state_selected="true" //用户选择了View
        android:drawable="@color/colorPrimary"/>
    <item android:state_checked="true" //用户选中了View,一般用于CheckBox这类在选中和没有选中状态之间切换的View
        android:drawable="@drawable/ic_launcher_background"/>
    <item android:state_enabled="true" //View处于可用状态
        android:drawable="@drawable/ic_launcher_foreground"/>
    <item android:drawable="#FFFFFF"/> //默认Drawable: 按顺序向下匹配,需要放在最下方,因为可以匹配任何状态
</selector>

相关标签的描述

属性描述
drawable定义状态匹配时应该使用的Drawable资源。可以引用其他的@Drawable/***
state_pressed当视图被按下时匹配此状态(true / false)
state_focused当前视图获得焦点时匹配此状态(true / false)
state_selected当视图被选中时匹配此状态(true / false)
state_checkable当视图是可检查的(如复选框或单选按钮)时匹配此状态(true / false)
state_checked当可检查的视图被选中时匹配此状态(true / false)
state_enabled当视图启用时匹配此状态(true / false)
state_window_focused当视图所在的窗口具有焦点时匹配此状态(true / false)
state_active当视图在可拖动窗口中处于活动状态时匹配此状态(如滚动条滑块)(true / false)
state_first当视图是其父级中的第一个可见子级时匹配此状态(true / false)
state_middle当视图是其父级中的中间可见子级时匹配此状态(true / false)
state_last当视图是其父级中的最后一个可见子级时匹配此状态(true / false)
state_single当视图是其父级中唯一的可见子级时匹配此状态(true / false)
state_above_anchor当视图在锚点上方时匹配此状态(如带有菜单项的ActionBar)(true / false)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值