您的位置:首页 > 产品设计 > UI/UE

Android UI--Shape和Selector

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

一、Shape属性

<solid>填充,就是背景色
<corners>边角形状,可以单独定义几个角的半径

<stroke>边框样式
<size> 大小
<padding>内容与边框的距离,实测无效……
<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三个单位,定义分别是:

   dp是Density-independent Pixels简写,密度无关

   dip是Density Independent Pixels

   px是Pixel的缩写,像素单位
前两者是一个概念,均是长度单位。按Google官方文档《支持多种屏幕》,开发布局中尽量使用dp单位,以适应不同分辨率(密度)的屏幕。相同dp的长度在不同分辨率屏幕上表现是一样大小,但改成px单位,显示大小会随屏幕分辨率变化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android ui