前言
最近看了一遍Android中的Drawable,因为Drawable的分类很多,而且Drawable在UI方面的开发工作中显的尤为重要,因为我在这里对Drawable做个总结。
BitmapDrawable
语法:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
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"]
android:mipMap=["true" | "false"]
android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
属性解释:
android:src 这个比较简单,就是图片的资源id
android:antialisa: 这个是图片是否抗锯齿
anroid:dither 是否开启抖动效果 ,默认是开启的
android:filter 图片是否开启过滤效果,如果开启,则在图片的宽高发生变化时,显示效果会比较好,默认是开启状态
android:gravity 可以对图片进行定位,当然前提是图片小于所在容器的大小。
android:mipMap 开发中不常用,可以不看
android:tileMode 平铺模式,这个选项有四个值分别是 disabled,clamp,repeat,mirror。
disabled是默认值,关闭平铺;
clamp的话,图片会进行扩展到周围的区域;
repeat的话,就是图片会进行重复的显示;
mirror其实就是一个图片在镜子当中的显示效果。
<?xml version="1.0" encoding="utf-8"?>
<bitmap
android:src="@drawable/ad3"
android:antialias="true"
android:dither="true"
android:filter="true"
android:tileMode="mirror"
xmlns:android="http://schemas.android.com/apk/res/android"
/>
repeat
clamp
mirror
ShapeDrawable
语法:
<?xml version="1.0" encoding="utf-8"?>
<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/drawable_resource"
android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:scaleHeight="percentage"
android:scaleWidth="percentage" />
属性解释:
android:shape 这个是定义图形要显示的形状,有四个,分别是 rectangle(矩形),oval(椭圆),line(线性),ring(环形)。
表示shape的四个角的角度
android:radius 为四个角同时设定相同角度。
android:topLeftRadius 设定左上角的角度
android:topRightRadius设定右上角的角度。
android:bottomLeftRadius设定左下角的角度。
android:bottomRightRadiys 设定右下角的角度。
主要是设置颜色变化的梯度即渐变的效果。
android:angle 渐变的角度
android:centerX ,android:centerY渐变的中心点的横坐标和纵坐标。值为0~1之间
android:startColor 渐变的初始颜色
android:endColor渐变的结束色
android:gradientRadius 渐变的半径
android:type 渐变的类型,有linear、radial、sweep三种
表示纯色的填充,通过android:color指定颜色
android:width 周边一个圆圈的宽度
android:color 描边的颜色
android:dashWidth 虚线的每个小线段的长度
android:dashGap 圆形虚线每个小线段的空隙间隔
View 中的drawable相对于View的间隔。
用于指定shape的宽度和高度
例子:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
LayerDrawable
语法:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<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>
例子:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/android_red"
android:gravity="center" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/android_green"
android:gravity="center" />
</item>
<item android:top="20dp" android:left="20dp">
<bitmap android:src="@drawable/android_blue"
android:gravity="center" />
</item>
</layer-list>
对应的标签是表示叠加的多个Drawable。