1.颜色Drawable:
<color xmlns:android="http://schemas.android.com/apk/res/android" android:color="#ff0000"/>
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>
渐变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>
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>
<?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);
在此标记内,可以使用每个<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>
<?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);