zoukankan      html  css  js  c++  java
  • AndroidSelector、shape详解

    来源:http://erwin-king.iteye.com/blog/1068543

    Selector结构描述:

    <?xml version="1.0" encoding="utf-8"?>

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

    <item

    android:color="hex_color"

    android:state_pressed="true/false"

    “true”表示按下状态使用(例如按钮按下);“false”表示非按下状态使用。

    android:state_focused="true/false"

    “true”表示聚焦状态使用(例如使用滚动球/D-pad聚焦Button);“false”表示非聚焦状态使用。

    android:state_selected="true/false"

    “true”表示选中状态使用(例如Tab打开);“false”表示非选中状态使用。

    android:state_active="true/false"

    “true”表示可勾选状态时使用;“false”表示非可勾选状态使用。(只对能切换可勾选—非可勾选的构件有用。)

    android:state_checkable="true/false"

    “true”表示勾选状态使用;“false”表示非勾选状态使用。

    android:state_checked="true/false"

    true”表示勾选状态使用;“false”表示非勾选状态使用。

    android:state_enabled="true/false"

    “true”表示可用状态使用(能接收触摸/点击事件);“false”表示不可用状态使用。

    android:state_window_focused="true/false"

    “true”表示应用程序窗口有焦点时使用(应用程序在前台);“false”表示无焦点时使用(例如Notification栏拉下或对话框显示)。

    />

    </selector>




    shape的结构描述:

    <shape>

    <!-- 实心 -->

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

    <!-- 渐变 -->

    <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>



    下面是上面属性的说明

    solid:实心,就是填充的意思

    android:color指定填充的颜色



    gradient:渐变

    android:startColor和android:endColor分别为起始和结束颜色,android:angle是渐变角度,必须为45的整数倍。

    另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。



    stroke:描边

    android:width="2dp" 描边的宽度,android:color 描边的颜色。

    我们还可以把描边弄成虚线的形式,设置方式为:

    android:dashWidth="5dp"



    android:dashGap="3dp"

    其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。



    corners:圆角

    android:radius为角的弧度,值越大角越圆。

    我们还可以把四个角设定成不同的角度,方法为:

    <corners

    android:topRightRadius="20dp" 右上角

    android:bottomLeftRadius="20dp" 右下角

    android:topLeftRadius="1dp" 左上角

    android:bottomRightRadius="0dp" 左下角

    />



    这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。

    还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。



    padding:间隔

    这个就不用多说了,XML布局文件中经常用到。



    具体代码如下:



    main.xml:

    <Button

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="TestShapeButton"

    android:background="@drawable/button_selector"

    />

    >



    button_selector.xml:

    <?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>
  • 相关阅读:
    Asp.net2.0 中自定义过滤器对Response内容进行处理 dodo
    自动化测试工具 dodo
    TestDriven.NET 2.0——单元测试的好助手(转) dodo
    JS弹出窗口的运用与技巧 dodo
    ElasticSearch 简介 规格严格
    修改PostgreSQL字段长度导致cached plan must not change result type错误 规格严格
    Linux系统更改时区(转) 规格严格
    mvn编译“Cannot find matching toolchain definitions for the following toolchain types“报错解决方法 规格严格
    ElasticSearch 集群 & 数据备份 & 优化 规格严格
    Elasticsearch黑鸟教程22:索引模板的详细介绍 规格严格
  • 原文地址:https://www.cnblogs.com/crane13/p/3150167.html
Copyright © 2011-2022 走看看