前言:
在于一个界面中,与用户产生交互最多的控件就是按钮,不过是Button,还是LIst View里面的item,都起到一个按钮的功能。用户通过点击这些显式或者隐式的按钮,来达到和程序交互的作用。而Android原生的按钮都是千篇一律的白色方块,这样的UI不仅会让用户感到审美疲劳,就连开发者也会感觉到死板,所以如恶化定制一个合适的按钮来搭配自己的整个界面的风格是很重要的。这里就需要用到Selector,来达到按钮的定制功能。
讲解:
Selector的作用是实习那静态绘图中的反馈事件,通过给不同的事件设置不同的图像或者渐变效果。
- 首先在res/drawable内创建一个selectortest.xml文件
创建完后的代码是这样的,然后在selector标签里面进行一些设置
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
</selector>
- 首先是设置不同的事件点击效果
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--默认时的背景图片-->
<item android:drawable="@drawable/selectortest"/>
<!--没有焦点时的背景图片-->
<item android:state_window_focused="true"
android:drawable="@drawable/selectortest"/>
<!--非接触模式下获得焦点并单击时的背景图片-->
<item android:state_pressed="true"
android:state_focused="true"
android:drawable="@drawable/selectortest"/>
<!--触摸模式下单机时的背景图片-->
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/selectortest"/>
<!--选中图片时的背景图片-->
<item android:state_selected="true"
android:drawable="@drawable/selectortest"/>
<!--获得焦点时的背景图片-->
<item android:state_focused="true"
android:drawable="@drawable/selectortest"/>
</selector>
根据不通的需求,可以设置不同的响应事件反馈。然后可以通过另外的几个标签来进行其他的设计。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--默认时的背景图片-->
<item android:state_pressed="true">
<!--设置形状-->
<shape android:shape="rectangle">
<!--填充的颜色-->
<solid android:color="@color/colorAccent"/>
<!--设置按钮的四个角为弧形-->
<!--android:radius 弧形的半径-->
<corners android:radius="5dip"/>
<!--padding:Button里面的文字与Button边界的间隙-->
<padding
android:left="10dp"
android:bottom="10dp"
android:right="10dp"
android:top="10dp"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorAccent"/>
<corners android:radius="5dip"/>
<padding
android:bottom="10dp"
android:right="10dp"
android:left="10dp"
android:top="10dp"/>
</shape>
</item>
</selector>
还有一个标签是gradient,具有渐变的功能
<gradient android:startColor="@color/colorAccent"//开始的颜色
android:endColor="@color/colorPrimary"//结束的颜色
android:gradientRadius="50dp"/>
最后是使用,在Button的background标签里调用资源文件就可以了