Android之Selector与Shape的使用
Selector:
在开发过程中,通常我们需要给控件增加点击的效果,效果如下:
默认效果 点击效果
1、首先准备两张图片(默认和点击时的图片)
2、右击res文件夹,新建一个xml文件,在弹出的对话框中,Resource Type 选择Drawable,Root Element选择Selector,填入文件名(如:pressed_selector),点击完成,这时会在res文件夹中生成一个drawable文件夹存放我们创建的xml文件
3、xml代码如下:
<?xmlversion="1.0"encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:state_pressed="true"//点击状态android:drawable="@drawable/ic_pressed"></item>//点击状态的图片<itemandroid:drawable="@drawable/ic_normal"></item>//没有设置状态则为默认图片</selector>
4、之后再布局文件中,在我们要增加点击效果的控件设置如下属性,运行后该控件就有点击效果了
android:background="@drawable/pressed_selector"
5、当然,出了设置点击时的效果,还可以设置选中状态、聚焦状态等等效果
只要设置相应 android:state_xxx 属性即可
Shape:
除了给控件设置点击效果,我们还可以在控件的外观上给予美化,比如设置圆角、边框等,这时候就要用到shape了,跟selector一样创建一个xml文件,Root Element选择Shape,就会生成shape xml文件,各种属性参考下面代码
<?xmlversion="1.0"encoding="utf-8"?><shapexmlns:android="http://schemas.android.com/apk/res/android"><!--设置圆角可用radius设置4个方向的圆角,也可分别单独设置4个圆角--><cornersandroid:radius="2dp"android:topLeftRadius="2dp"android:topRightRadius="2dp"android:bottomLeftRadius="2dp"android:bottomRightRadius="2dp"/><!--描边,即边框,默认是实线;dashWidth、dashGap两个属性设置虚线--><strokeandroid:width="2dp"android:color="#dcdcdc"android:dashWidth="2dp"android:dashGap="3dp"/><!--实心,即填充的颜色--><solidandroid:color="#ffffff"/><!--渐变--><gradientandroid:angle="200"android:endColor="#00ff00"android:startColor="#ffffff"/><!--间隔--><paddingandroid:bottom="10dp"android:left="10dp"android:right="10dp"android:top="10dp"/></shape>
同样是给控件设置background属性即可引入shape效果
android:background="@drawable/shape"
Selector与Shape结合使用:
如果我们要给控件同时设置点击效果和shape效果,只需要把shape的代码移植到selector中即可,代码如下:
<?xmlversion="1.0"encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android"><!--分别设置点击时和默认状态的shape--><itemandroid:state_pressed="true"><shape><cornersandroid:radius="20dp"/><solidandroid:color="#e0e0e0"/></shape></item><item><shape><cornersandroid:radius="20dp"/><solidandroid:color="#ffffff"/></shape></item></selector>
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。