Android UI--Shape和Selector

来源:互联网 发布:c语言必读书籍 编辑:程序博客网 时间:2024/05/16 00:47

Android UI开发中,Shape定义控件的样式,Selector定义控件状态。比如定义圆角Button,矩形Button,Button按下后的变化响应等,下面介绍在XML文件中静态定义。

一、Shape属性

  1. <solid>填充,就是背景色
  2. <corners>边角形状,可以单独定义几个角的半径
  3. <stroke>边框样式
  4. <size> 大小
  5. <padding>内容与边框的距离,实测无效……
  6. <gradient>渐变样式,包括渐变两头的颜色、变化角度
定义一个bg_btn.xml文件


<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" >   <!-- 在item属性中设置padding值也无效 -->   <item android:top="0dp" android:right="2dp" android:left="2dp" >        <shape android:shape="rectangle">                      <!-- 填充 -->         <solid android:color="#FF000000" />                    <!-- 圆角 -->         <corners              android:topLeftRadius="10dip"              android:topRightRadius="5dip"              android:bottomLeftRadius="30dip"              android:bottomRightRadius="5dip" />                       <!-- 描边 就是边框-->         <stroke              android:width="2dp"              android:color="#ff0000" />                  <!-- 间隔,实测这样设置没用 -->         <padding android:top="0dp" android:right="2dp" android:left="2dp"/>                  <!-- 这个样式的按键大小 -->         <size              android:height="50dp"              android:width="180dp" />      </shape>           </item>  </selector>


布局文件中添加一个Button,backgroud里应用该样式

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" ><Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/bg_btn"    android:text="按键样式一"     android:textColor="#ffffff"/></LinearLayout>

效果如图


有点丑……


二、Selector

根据不同的选定状态来定义不同的现实效果

分为四大属性:

android:state_selected 是否选中

android:state_focused 是否获得焦点

android:state_pressed 是否按压

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


同样,drawable文件夹下新建一个btn_color.xml,描述各种状态下按键的文字颜色


<?xml version="1.0" encoding="utf-8"?>  <selector xmlns:android="http://schemas.android.com/apk/res/android">      <item android:state_focused="false" android:state_enabled="true" android:state_pressed="false"          android:color="#ff0000" />      <!-- 禁止状态 -->    <item android:state_enabled="false" android:color="#ccc" />      <!-- 接下状态 -->    <item android:state_pressed="true"  android:color="#00ff00" />      <!-- 聚焦状态 -->    <item android:state_focused="true"  android:color="#0000ff" />  </selector>  


layout文件中,Button属性赋值

           android:textColor="@drawable/btn_color"

可以看到几种状态下Button文字颜色变化


三、单位

Android开发中有dp、dip和px三个单位,定义分别是:

  1.    dp是Density-independent Pixels简写,密度无关
  2.    dip是Density Independent Pixels
  3.    px是Pixel的缩写,像素单位
前两者是一个概念,均是长度单位。按Google官方文档《支持多种屏幕》,开发布局中尽量使用dp单位,以适应不同分辨率(密度)的屏幕。相同dp的长度在不同分辨率屏幕上表现是一样大小,但改成px单位,显示大小会随屏幕分辨率变化。




0 0
原创粉丝点击