UI 设置 selector 文件解读。

 

UI 设置 selector 文件解读。

一、selector 示例

UI设计美化时候,用selector 是再好不过的了。Selector 相当于一张样式表,也非常利于维护。下面展示调用方式。

Main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    xmlns:wwj="http://schemas.android.com/apk/res/com.wwj.textView" 

    xmlns:tools="http://schemas.android.com/tools" 

    android:id="@+id/LinearLayout1" 

    android:layout_width="match_parent" 

    android:layout_height="match_parent" 

    android:orientation="vertical" >

    <Button

        android:id="@+id/favorityId"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="收藏"

        android:background="@drawable/newsdetail_button"

        android:textSize="10dp"

        android:overScrollMode="ifContentScrolls"

        />

</LinearLayout>

 

newsdetail_button.xml 文件放在res\drawable\ 底下。android:background="@drawable/newsdetail_button"

这句话通过id 来调用selector文件res\drawable\newsdetail_button.xml

 

res\drawable\newsdetail_button.xml

 

<selector

    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" >

        <shape>

            <!-- 渐变 -->

            <gradient

                android:startColor="#FFFF00"

                android:endColor="#FF7F24"

                android:type="linear"

                android:angle="0"

                android:gradientRadius="150" />

            <!-- 描边 -->

            <stroke

                android:width="2dp"

                android:color="#FFF68F"

                android:dashWidth="5dp"

                android:dashGap="0dp" />

            <!-- 圆角 -->

            <corners

                android:radius="0dp" />

            <padding

                android:left="10dp"

                android:top="10dp"

                android:right="10dp"

                android:bottom="10dp" />

        </shape>

    </item>

 

    <item android:state_focused="true" >

        <shape>

            <gradient

                android:startColor="#FF0000"

                android:endColor="#FF00FF"

                android:angle="0" />

            <stroke

                android:width="2dp"

                android:color="#FF0000" />

            <corners

                android:radius="2dp" />

            <padding

                android:left="10dp"

                android:top="10dp"

                android:right="10dp"

                android:bottom="10dp" />

        </shape>

    </item>

    <!-- 默认启动的 item -->

    <item>      

        <shape>

            <!-- 填充 -->

            <solid android:color="#F0F0F0"/>

            <!-- 锚边 -->

            <stroke

                android:width="0dp"

                android:color="#FF0000" />

            <!-- 圆角 -->

            <corners

                android:topRightRadius="0dp"

                android:bottomLeftRadius="0dp"

                android:topLeftRadius="0dp"

                android:bottomRightRadius="0dp"

            />

            <!-- 间距 -->

            <padding

                android:left="0dp"

                android:top="10dp"

                android:right="0dp"

                android:bottom="10dp" />

        </shape>

    </item>

</selector>

效果如下:

二、各属性详解

1、  solid   

     描述:内部填充  

      属性     android:color 填充颜色  

2、size   

     描述:size: 大小  

     属性:  

     android:width   表示形状的宽度  

     android:height 表示形状的高度  

3、gradient  

      描述: 渐变色  

       属性:  

       android:startColor  起始颜色  

       android:endColor    结束颜色  

       android:angle       渐变角度(PS:当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。angle必须为45的整数倍)  

       android:type       渐变类型(取值:linear、radial、sweep)  

                            linear  线性渐变,这是默认设置  

                            radial  放射性渐变,以开始色为中心。  

                            sweep   扫描线式的渐变。  

       android:centerColor  渐变中间颜色,即开始颜色与结束颜色之间的颜色  

       android:useLevel   如果要使用LevelListDrawable对象,就要设置为true。设置为true无渐变。false有渐变色  

       android:gradientRadius  渐变色半径.当 android:type="radial" 时才使用。单独使用 android:type="radial"会报错。  

       android:centerX    渐变中心X点坐标的相对位置  

       android:centerY   渐变中心Y点坐标的相对位置  

4、stroke  

描述: stroke:描边  相当于html中的盒子模型的border    

   属性:  

        android:width 描边的宽度  

        android:color 描边的颜色  

        android:dashWidth 表示描边的样式是虚线的宽度,值为0时,表示为实线。值大于0则为虚线。 

        android:dashGap  表示描边为虚线时,虚线之间的间隔 即“ - - - - ”  

 5、corners  

            描述: corners: 圆角  

            属性:  

        android:radius  半径  

        android:topLeftRadius  左上角半径  

        android:topRightRadius  右上角半径  

        注意一下两个属性比较不同:  

        android:bottomLeftRadius 右下角半径  

        android:bottomRightRadius 左下角半径  

 6、padding  

         描述:内部边距,即内容与边的距离  

         属性:  

        android:left  左内边距  

        android:top   上内边距  

        android:right  右内边距  

        android:bottom 下内边距  

三、Android drawable state 各个属性详解

android:drawable 放一个drawable资源
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没有任何的状态说明,那么它将可以被任何一个状态匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值