使用Button特效 selector+shape

来源:互联网 发布:飞利浦x830软件 编辑:程序博客网 时间:2024/05/20 13:05

Android开发–使用Button特效 selector+shape

shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector。

Shape

简介

作用:XML中定义的几何形状
位置:res/drawable/文件的名称.xml
使用的方法:
Java代码中:R.drawable.文件的名称
XML中:Android:background=”@drawable/文件的名称”

属性:

Android:shape=[“rectangle” | “oval” | “line” | “ring”]
其中rectagle矩形,oval椭圆,line水平直线,ring环形

<shape>中子节点的常用属性:    <gradient>  渐变        Android:startColor  起始颜色        Android:endColor  结束颜色                     Android:angle  渐变角度,0从上到下,90表示从左到右,数值为45的整数倍默认为0;        Android:type  渐变的样式 liner线性渐变 radial环形渐变 sweep    <solid >  填充        Android:color  填充的颜色    <stroke > 描边        Android:width 描边的宽度        Android:color 描边的颜色        Android:dashWidth 表示'-'横线的宽度        Android:dashGap 表示'-'横线之间的距离    <corners > 圆角        Android:radius  圆角的半径 值越大角越圆        Android:topRightRadius  右上圆角半径        Android:bottomLeftRadius 右下圆角角半径        Android:topLeftRadius 左上圆角半径        Android:bottomRightRadius 左下圆角半径

Selector

简介

位置:res/drawable/文件的名称.xml
使用的方法:
Java代码中:R.drawable.文件的名称
XML中:Android:background=”@drawable/文件的名称”

<?xml version="1.0" encoding="utf-8"?>  <selector  xmlns:android="http://www.norkoo.com">      <item android:state_pressed="true" ></item>      button被按下时的状态    <item android:state_focused="true" ></item>      button触摸获得焦点    <item></item>      button正常状态</selector>  

shape与selector一起使用

<?xml version="1.0" encoding="utf-8"?>  <selector  xmlns:android="http://www.norkoo.com">  <item android:state_pressed="true" >      <shape>          <gradient              android:startColor="#ff8c00"              android:endColor="#FFFFFF"              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 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>          <gradient              android:startColor="#ff9d77"              android:endColor="#ff9d77"              android:angle="270" />          <stroke              android:width="2dp"              android:color="#fad3cf" />          <corners              android:radius="2dp" />          <padding              android:left="10dp"              android:top="10dp"              android:right="10dp"              android:bottom="10dp" />      </shape>  </item>  </selector>

android:state_pressed 是否按下,如一个按钮触摸或者点击。
android:state_focused 是否取得焦点,比如用户选择了一个文本框。
android:state_hovered 光标是否悬停,通常与focused state相同,它是4.0的新特性
android:state_selected 被选中,它与focus state并不完全一样,如一个list view 被选中的时候,它里面的各个子组件可能通过方向键,被选中了。
android:state_checkable 组件是否能被check。如:RadioButton是可以被check的。
android:state_checked 被checked了,如:一个RadioButton可以被check了。
android:state_enabled 能够接受触摸或者点击事件
android:state_activated 被激活(这个麻烦举个例子,不是特明白)
android:state_window_focused 应用程序是否在前台,当有通知栏被拉下来或者一个对话框弹出的时候应用程序就不在前台了

注意:如果有多个item,那么程序将自动从上到下进行匹配,最先匹配的将得到应用。(不是通过最佳匹配)
如果一个item没有任何的状态说明,那么它将可以被任何一个状态匹配。

0 0
原创粉丝点击