android 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分别为起始和结束颜色,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布局文件中经常用到。

大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:

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>

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

时间: 2024-11-08 22:27:27

android selector中使用shape的相关文章

Android selector(背景选择器) , shape(设定形状)

Selector: <?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 默认时的背景图片--> <item android:drawable="@drawable/pic1" /> <!-- 没有焦

Android Drawable 关于selector中state_pressed=&quot;true&quot;的位置顺序

界面中有一个按钮使用这样的样式: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <corners android:radius="10dp"/> <solid a

Android中使用shape来定义控件

本文章转接于:http://kofi1122.blog.51cto.com/2815761/521605 Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码:        <shape>            <!-- 实心 -->            <solid android:color="#ff9d77"/>            <!--

Android中使用shape来定义控件的一些显示属性

本人在美工方面一直是比较白痴的,对于一些颜色什么乱七八糟的非常头痛,但是在Android编程中这又是经常涉及到的东西,没办法,只有硬着头皮上. Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码:        <shape>            <!-- 实心 -->            <solid android:color="#ff9d77"/>

浅谈Android开发中Shape的使用

引言 在Android开发中我们很多情况都是使用图片来展示相关效果,今天我就来详细介绍下Android下使用Shape来进行简单UI的开发.一方面这些是Android开发的基础,另一方面这方面的知识可以在一定程度上减少图片的使用,降低App的体积.下面我就来详细介绍Shape的相关知识. 注意点:一般用shape定义的xml文件存放在drawable目录下,若项目没有该目录则新建一个,而不要将它放到drawable-hdpi等目录中. Shape支持的类型形状    rectangle: 矩形,

关于Android开发中Shape的总结

今天修改Android的界面布局修改了正在一天,各种控件的样式和标准都有一定的规范.对于样式的设计我也是研究了一天,为了防止遗忘,特在此记录一下: 在Android开发中,为响应美化应用中控件的效果,使用Shape定义图形效果,可以解决图片过多的问题. 1 <!-- 圆角 --> 2 <corners 3 android:radius="9dp"<!-- 设置四个角半径的值 --> 4 android:topLeftRadius="2dp&quo

android selector shape 使用

先上效果图 message_toolbar_left_bg_selector <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <shape>

[转]Android样式的开发:shape篇

转载自Keegan小钢原文链接:http://keeganlee.me/post/android/20150830 Android样式的开发:shape篇Android样式的开发:selector篇Android样式的开发:layer-list篇Android样式的开发:drawable汇总篇Android样式的开发:View Animation篇Android样式的开发:Property Animation篇Android样式的开发:Style篇 一个应用,应该保持一套统一的样式,包括Butt

Android样式的开发:shape篇

转载请注明:转载自Keegan小钢并标明原文链接:http://keeganlee.me/post/android/20150830微信订阅号:keeganlee_me写于2015-08-30 Android样式的开发:shape篇Android样式的开发:selector篇Android样式的开发:layer-list篇Android样式的开发:drawable汇总篇Android样式的开发:View Animation篇Android样式的开发:Property Animation篇Andr