您的位置:首页 > 其它

selector,shape的自定义使用

2016-09-27 12:25 141 查看

1.selector的使用详解

1.创建selector的xml资源文件

右击drawable目录--》点击new--》Drawable resource file



这样selector资源文件创建完毕,然后来编写它的功能

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item
android:state_pressed="false"
android:drawable="@color/red">
</item>
<item
android:state_pressed="true"
android:drawable="@color/blue">
</item>
<item
android:drawable="@color/green">
</item>
</selector>
事件是从上往下解析的,所以要注意item的编写顺序,以免发生写了没有效果呈现,一般最后一个item是默认项。

2.属性介绍

android:state_selected 选中

android:state_focused 获得焦点

android:state_pressed 点击

android:state_enabled 是否响应事件,指所有事件

3.重点注意

在selector的item中,如果要定义颜色属性,千万不可采用<item android:color="#ff0000"/>的方式,这样应用会自动闪退,正确写法为:<item android:drawable="@color/red"/> ,其中里面android:drawable属性中肯定可以放图片的。

2.shape的使用详解

1.创建shape的xml资源文件

跟selector的创建方法一样,唯一的区别就是把selector改成shape

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<!-- 圆角 -->
<corners
android:radius="9dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/><!-- 设置圆角半径 -->

<!-- 渐变 -->
<gradient
android:startColor="@color/colorAccent"
android:centerColor="@color/green"
android:endColor="@color/blue"
android:useLevel="true"
android:angle="45"
android:type="radial"
android:centerX="0"
android:centerY="0"
android:gradientRadius="90"/>

<!-- 间隔 -->
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/><!-- 各方向的间隔 -->

<!-- 大小 -->
<size
android:width="50dp"
android:height="15dp"/><!-- 宽度和高度 -->

<!-- 填充 -->
<solid
android:color="@color/green"/><!-- 填充的颜色 -->

<!-- 描边 -->
<stroke
android:width="2dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp"/>

</shape>


2.属性介绍

填充:设置填充的颜色

间隔:设置四个方向上的间隔

大小:设置大小

圆角:同时设置五个属性,则Radius属性无效

android:Radius="20dp" 设置四个角的半径

android:topLeftRadius="20dp" 设置左上角的半径

android:topRightRadius="20dp" 设置右上角的半径

android:bottomLeftRadius="20dp" 设置右下角的半径

android:bottomRightRadius="20dp" 设置左下角的半径

描边:dashWidth和dashGap属性,只要其中一个设置为0dp,则边框为实现边框

android:width="20dp" 设置边边的宽度

android:color="@android:color/black" 设置边边的颜色

android:dashWidth="2dp" 设置虚线的宽度

android:dashGap="20dp" 设置虚线的间隔宽度

渐变:当设置填充颜色后,无渐变效果。angle的值必须是45的倍数(包括0),仅在type="linear"有效,不然会报错。另外android:useLevel的值为true的话,有渐变效果,反之没有。



3.两者的综合应用

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<!-- 渐变 -->
<gradient
android:startColor="#ff8c00"
android:endColor="#FFFFFF"
android:type="radial"
android:gradientRadius="50"/>
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="#dcdcdc"
android:dashWidth="5dp"
android:dashGap="3dp"/>
<!-- 圆角 -->
<corners
android:radius="2dp"/>
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"/>
</shape>
</item>

<item android:state_focused="true">
<shape>
<gradient
android:startColor="#ffc2b7"
android:endColor="#ffc2b7"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#dcdcdc"/>
<corners
android:radius="2dp"/>
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"/>
</shape>
</item>

<item>
<shape>
<solid android:color="#ff9d77"/>
<stroke
android:width="2dp"
android:color="#fad3cf"/>
<corners
android:topRightRadius="5dp"
android:bottomLeftRadius="5dp"
android:topLeftRadius="0dp"
android:bottomRightRadius="0dp"/>

<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"/>
</shape>
</item>
</selector>
效果图:



好了,今天就讲这么多了,谢谢各位的捧场,demo这次就不上传了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息