`

[整理]Selector、shape详解

阅读更多

Selectorshape详解(一)

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:startColorandroid:endColor分别为起始和结束颜色,ndroid: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>  

 

源码来自:http://sunxin1001.iteye.com/blog/890175

http://xiaozu.renren.com/xiaozu/102718/333508779

 

分享到:
评论

相关推荐

    实例详解Android Selector和Shape的用法

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector。可以这样说,shape和selector在美化控件中的作用是至关重要的。 1:Selector ...

    Android shape和selector 结合使用实例代码

    Shape详解** Shape是Android中用于创建基本图形的XML元素,它可以定义为四种基本形状:矩形(rectangle)、椭圆(oval)、线(line)和环形(ring)。在res/drawable目录下创建XML文件来定义Shape,然后通过Java...

    android shape

    Android Shape 使用详解 Android 中的 Shape 是一个非常重要的概念,它用于定义控件的显示属性,如颜色、渐变、描边、圆角、间隔等。今天,我们将详细地介绍 Shape 的使用方法和相关知识点。 首先,看下面的代码:...

    Android selector状态选择器的使用详解

    Android selector状态选择器的使用详解 Android selector状态选择器是Android应用程序中常用的UI组件,它可以根据不同的状态来改变控件的外观和行为。例如,在一个按钮控件中,selector可以根据按钮的状态(如点击...

    详解android shape的使用总结

    shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下:  &lt;?xml version=1.0 encoding=utf-8?&gt; &lt;shape xmlns:android=http://schemas.android.com/apk/res/android&gt; &lt;!-- ...

    详解Android用Shape制作单边框图的两种思路和坑

    在学习和使用Shape XML时,建议查阅更多关于Shape的使用详解,包括如何实现渐变色、分割线、边框和半透明阴影等效果。同时,了解Shape与Selector的结合使用,可以让你更高效地创建动态的、响应触摸事件的UI元素。 ...

    Android 自定义Switch开关按钮的样式实例详解

    Android 自定义Switch开关按钮的样式实例详解 Android 中的 Switch 开关按钮是用户界面中常用的控件之一,然而原生 Switch 控件的样式并不是很美观,为了满足不同的设计需求,我们需要对 Switch 开关按钮进行自定义...

    EditText属性详解

    如果使用`selector`,我们可以创建一个状态选择器,根据`EditText`的不同状态(如焦点、按下等)展示不同的背景效果。 `shape`的使用通常涉及到自定义边框和背景。通过创建一个XML资源文件,我们可以定义矩形、圆角...

    android自定义Switch控件详解

    例如,创建`my_thumb.xml`和`my_track.xml`,然后使用`&lt;selector&gt;`标签来定义不同状态下的Drawable,如按下、未按下等。 3. **自定义颜色和背景**: 在XML资源中,我们可以设置滑块和轨道的颜色。例如,我们可以用...

    android:drawable.xml相关应用

    #### 二、Selector状态选择器详解 `selector.xml` 是一种特殊的`drawable.xml` 文件类型,它可以根据当前视图的状态(如选中、聚焦、按下等)显示不同的图片或者颜色。下面是一个具体的例子: ```xml &lt;selector ...

    Android绘图技巧使用详解

    在示例中,Selector定义了两个`&lt;shape&gt;`,一个对应于按下状态,另一个对应于默认状态。通过设置不同的颜色和填充,我们可以为按钮或其他可点击控件提供视觉反馈,使得用户在触摸时能明显感知到变化。 至于Canvas,...

    Android 中API之Drawable资源详解及简单实例

    Android 中的 Drawable 资源详解及简单实例 Android 中的 Drawable 资源是一种非常重要的资源,它可以用来定义视图的外观样式,如背景、边框、形状等。Drawable 资源可以分为两大类:一类是 Vector Drawable,一类...

    Android UI效果之绘图篇(一)

    Android XML绘图(Shape、Layer、Selector) Android Canvas绘图(canvas、point、porterDuffXfermode、shader) Android 动画详解 Android 自定义控件 今天就当开胃菜,先讲讲最简单的xml绘图,相信这个大家...

    Android中layer-list基本使用详解

    在实际应用中,`layer-list` 可以与其它 `Drawable` 类型结合使用,如 `selector` (选择器) 或 `inset` (内嵌),以创建更复杂的视图效果。此外,还可以通过设置 `android:drawable` 属性引用其他资源,实现更灵活的...

    Android自定义控件样式实例详解

    一个典型的例子是使用`selector`节点,它允许根据控件的状态(如按下、聚焦、选中等)切换不同的样式。 1. 控件常见状态: - `android:state_pressed`: 指示控件是否处于按下状态。如果为`true`,则表示按下,如...

Global site tag (gtag.js) - Google Analytics