<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 边角的圆弧半径 -->
<corners android:radius="9dp" />
<!-- 实心填充 -->
<solid android:color="#00000000" />
<!-- 描边:一般大小都是1dp -->
<stroke
android:width="1dp"
android:color="#ff000000" />
<!-- 四周留出来的空白,和xml文件中的pad效果一样,对内起作用 -->
<padding
android:bottom="30dp"
android:left="20dp"
android:right="30dp"
android:top="20dp" />
<!-- 背景颜色渐变 -->
<gradient
android:angle="90"
android:endColor="#ff00ff00"
android:startColor="#ff0000ff" />
</shape>
shape总体说来可以看做是使一张图片,放在drawable目录下,可以单独使用,也可以和selector一起使用,主要用户处理图片的圆角,点击变色的变化。可以单独写comm_shape.xml,press_shape.xml(文件名是随便取的), 然后结合selector使用,如果熟练的话可以直接在selector中直接写,那样看起来文件不是那么多。注意上面的代码中,实心solid和渐变gradient一般不会一起使用。
相关属性:
Android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片-->
<!-- 没有焦点时的背景图片 -->
<!--选中时的图片背景-->
<!--获得焦点时的图片背景-->
<item android:state_focused="true"
<!--点击时的图片背景-->
<item android:state_pressed="true" android:drawable="@drawable/select" />
</selector>
二.使用xml文件:
1.方法一:在listview中配置android:listSelector="@drawable/xxx
或者在listview的item中添加属性android:background="@drawable/xxx"
2.方法二:Drawable drawable = getResources().getDrawable(R.drawable.xxx);
是配置button中的文字效果:
<Button android:textColor="@drawable/button_font" />
drawable/button_font.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#0FF" />
<item android:state_focused="true" android:color="#FF0" />
</selector>
Button还可以实现更复杂的效果,例如渐变
drawable/button_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">//定义当button 处于pressed 状态时的形态。
<shape>
</shape>
<item android:state_focused="true">/ / 定义当button获得 focus时的形态
<shape>
<padding android:left="10dp" android:top="10dp" android:bottom="10dp" android:right="10dp"/>
</shape>
</selector>
最后,需要在包含 button的xml文件里添加两项。例如main.xml 文件,需要在<Button />里加两项android:focusable="true"