Drawable 常被用来作为 View 的背景使用,一般使用 XML 文件定义。Drawable 的内部宽/高,可以通过 getIntriniscWidth 和 getIntrinscHeight 获取。
分类
常用的
BitmapDrawable
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@mipmap/Rmipmap.ic_laucher" /> <!--图片的资源--> android:antialias="true | false" <!--抗锯齿功能,让图片变得平滑,但是会降低图片的清晰度--> android:dither="true | flase" <!--抖动效果,让高质量的图片在低质量的屏幕上保持更好的显示效果--> android:filter="true"<!--过滤效果,当图片被拉伸或者压缩时,开启后可以保持较好的显示效果--> android:gravity="top" android:mipMap="true" <!--纹理映射,不常用,可忽略--> android:tileMode="disabled | clamp | repeat | mirror"> <!--平铺模式,开启后,gravity 属性会被忽略--> </bitmap>
ShapeDrawable
shapeDrawable 通过颜色来构造的图像,它既可以是纯色的图形,也可以是具有渐进效果的图形
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle | line | oval | ring"> <!--形状--> <corners <!-- 圆角的程度--> android:radius="integer" android:topLeftRadius="" android:topRightRadius="" android:bottomLeftRadius="" android:bottomRightRadius="" /> <gradient <!--渐变效果--> android:angle="integer" <!--渐变的角度,默认值为0, 其实数值必须为 45 的倍数, 0表示从左到右,90 表示从上到下--> android:centerY="integer" <!--渐变中心点的 Y 坐标--> android:centerX="integer" <!--渐变中心点的 X 坐标--> android:startColor="color" android:centerColor="color" android:endColor="color" android:gradientRadius="integer" <!--渐变半径, 仅当 android:type="radial" 时有效--> android:type="linear | radial | sweep" <!--渐变类别--> android:useLevel="true | false"/> <!--一般为 false, 当 drawable 作为 StateListDrawable 使用时为 true--> <padding <!--空白--> android:left="integer" android:top="integer" android:right="integer" android:bottom="integer"/> <size <!--大小--> android:width="integer" android:height="integer"/> <solid <!--纯色填充--> android:color="color"/> <stroke <!--描边--> android:width="integer" android:color="color" android:dashWidth="integer" <!--虚线的宽度--> android:dashGap="integer" <!--虚线线段之间的间隔大小--> /> </shape>
LayerDrawable
对应的标签是<Layer-list>, 表示一种层次的 Drawable 集合,通过将不同的 Drawable 放置在不同的层上从而到达一种叠加的效果。
<?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> <shape android:shape="rectangle"> <solid android:color="#00ffff"/> </shape> </item> <item android:bottom="1dp"> <shape android:shape="rectangle"> <solid android:color="#ffffff"/> </shape> </item> </layer-list>
StateListDrawable <selector>, 主要用于设置可单击的 View 的背景
LevelListDrawable <level-list>,
TransitionDrawable<transition>, 用于实现两个 Drawable 之间的淡入淡出效果
InsertDrawable<insert> , 它可以将其他 Drawable 内嵌到自己当中,并可以在四周流出一定的间距。当一个 View 希望自己的背景比自己的实际区域小的时候,可以采用 InsertDrawable.
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetBottom="15dp" android:insetLeft="15dp" android:insetRight="15dp" android:insetTop="15dp" > <shape android:shape="rectangle" > <solid android:color="#ff0000" /> </shape> </inset>ScaleDrawable <scale>
ClipeDrawable <clip>