1.颜色Drawable:
<color xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ff0000"/>
2.形状Drawable
Android目前支持以下的形状类型,使用时需要将它们指定为shape类型,形状包括:line(线条)oval(椭圆)rectangle(矩形)ring(圆)
以下代码为矩形Drawable
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--内部填充色-->
<solid android:color="#ff060000" />
<!--边框填充色以及边框宽度-->
<stroke
android:width="10dp"
android:color="#00ff00" />
<!--边框弧度-->
<corners android:radius="15dp" />
<!--上下左右边距-->
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</shape>
3.渐变Drawable
渐变Drawable是使用<gradient>标记并且作为形状Drawable定义中的子节点定义的
类型包括线性渐变、辐射渐变、扫描渐变,具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<!--线性渐变-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:useLevel="false">
<gradient
android:angle="45"
android:centerColor="#000000"
android:endColor="#ffffff"
android:startColor="#ffffff"
android:type="linear"
android:useLevel="false" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--辐射渐变的椭圆-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false">
<gradient
android:centerColor="#000000"
android:endColor="#ffffff"
android:gradientRadius="300"
android:startColor="#ffffff"
android:type="radial"
android:useLevel="false" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--辐射渐变的圆环-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:useLevel="false"
android:innerRadiusRatio="3"
android:thicknessRatio="8">
<gradient
android:startColor="#ffffff"
android:endColor="#ffffff"
android:centerColor="#000000"
android:useLevel="false"
android:type="sweep"/>
</shape>
4.变换Drawable:
ScaleDrawable:在<scalse>标记内,使用scaleHeight和scaleWidth属性分别定义相对于原始Drawable的包围框的目标高度和宽度。使用scaleGravity属性可以控制可缩放图像的锚点。
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@android:drawable/sym_def_app_icon"
android:scaleHeight="80dp"
android:scaleWidth="80dp"
android:scaleGravity="center_horizontal|center_vertical">
</scale>
RotateDrawable:在<rotate>标记内,使用fromDegrees和toDegrees分别定义围绕轴心点的其实和结束角度。使用pivotX和pivotY属性定义轴心点,并使用nn%符号指定Drawable的宽度和高度的百分比
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@android:drawable/sym_def_app_icon"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="90"></rotate>
然后需要在使用时候调用如下方法进行设置:
ImageView scalingImage = (ImageView) findViewById(R.id.scale_view);
ImageView rotateImage = (ImageView) findViewById(R.id.rotate_view);
//将图像朝向最终方向旋转50%
rotateImage.setImageLevel(5000);
//将图像缩小为最终大小的50%
scalingImage.setImageLevel(5000);
5.层Drawable
在此标记内,可以使用每个<item>子节点内的Drawable属性定义要添加的Drawable。每个Drawable将按照索引顺序堆叠,数组的第一个item将放在栈的最底部。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:drawable/button_onoff_indicator_off"></item>
<item android:drawable="@android:drawable/button_onoff_indicator_on"></item>
<item android:drawable="@android:drawable/presence_audio_busy"></item>
</layer-list>
6.状态列表Drawable(选择器)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:drawable/ic_btn_speak_now" android:state_pressed="true"></item>
<item android:drawable="@android:drawable/button_onoff_indicator_on" android:state_focused="true"></item>
<item android:drawable="@android:drawable/presence_audio_busy" android:state_window_focused="false"></item>
<item android:drawable="@android:drawable/editbox_dropdown_dark_frame"></item>
</selector>
其中:
android:state_pressed 按下或者没有按下
android:state_focused 有焦点或者没有焦点
android:state_hovered API11引入,光标在view上悬停或不悬停
android:state_selected 选中或者没有选中
android:state_checked 是选中状态或者不是选中状态
android:state_checkable 能或者不能被选中
android:state_enabled 启用或者禁用
android:state_activated 激活或者未激活
android:state_window_focused 父窗口有焦点或者没有焦点
7.级别列表Drawable
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@android:drawable/presence_audio_busy"
android:maxLevel="0"></item>
<item
android:drawable="@android:drawable/alert_dark_frame"
android:maxLevel="1"></item>
<item
android:drawable="@android:drawable/alert_light_frame"
android:maxLevel="2"></item>
<item
android:drawable="@android:drawable/arrow_down_float"
android:maxLevel="3"></item>
</level-list>
ImageView ivLevelList = (ImageView) findViewById(R.id.level_list_drawable);
//显示第几个索引值
ivLevelList.setImageLevel(3);