先看一下文档对Shape Drawable的描述:

   Shape Drawable
An XML file that defines a geometric shape, including colors and gradients.一个定义几何形状的XML文件,包括颜色和渐变。
创建一个ShpeDrawable对象
Android:background="@drawable/xxx.xml"或相应的Java代码引用,Shape Drawable说白了就是可自定义的多样化的背景。

现在对比较重要的标签和属性进行解释:

和其它drawable文件一样,在drawable目录下创建xml文件,以<shape>为根元素,有两个重要属性

1、xmlns:android="http://schemas.android.com/apk/res/android"   这个不说了,必填

2、android:shape 定义shape的形状有4个值"rectangle","oval","line","ring"分别是矩形、椭圆、线型和环形,一般用的较多的是前两种

shape元素下的其它属性均仅适用于android:shape="ring"时。

Shape的子元素包括

<corners>

<gradient>

<padding>
<size>
<solid>
<stroke>

<corners>指定边角的半径,简单的说,数值越大角越圆,数值越小越趋近于直角,参数为:

  1. android:radius="integer"
  2. android:topLeftRadius="integer"
  3. android:topRightRadius="integer"
  4. android:bottomLeftRadius="integer"
  5. android:bottomRightRadius="integer"
 android:radius直接指定4个角的半径,另外4个属性可以单独设置4个角的角度

<gradient>的作用是设置颜色渐变,有以下属性

  1. android:angle="integer"    设置渐变的角度,数值必须为45的倍数,默认为0,即从左到右渐变。当值为90时,从下到上渐变,以此类推当值为180时
  2. 为270时从上向下渐变。
  3. android:centerX="integer"   渐变的水平中心点,值为0-1.0
  4. android:centerY="integer"   渐变的垂直中心点,值为0-1.0
  5. android:centerColor="integer"   中心的颜色,非必须
  6. android:endColor="color"    结束渐变时的颜色
  7. android:gradientRadius="integer"   渐变的半径,仅适用于android:type="radial"时
  8. android:startColor="color"  开始渐变时的颜色
  9. android:type=["linear" | "radial" | "sweep"]   渐变的类型,分别为线状、中心放射状、经测试类似于雷达扫描的一种形态(词汇匮乏不知道该怎么翻译,⊙﹏⊙b汗)
  10. android:usesLevel=["true" | "false"]   貌似是可以被当做level-list用的意思

<padding>是为内容或子标签设置边距,4个属性top、bottom、left、right,需要注意的是这个标签的作用是为内容设置与当前应用此shape的View的边距,而不是设置当前View与父元素的边距。

<size>就不用说了,设置背景大小,width和height俩属性。

    <solid>只有一个属性,即color,设置整个背景的颜色,如果已经定义了渐变色,那么这个属性就无效了。

    <stroke>  描边,即设置边框

  1. <span style="font-size:16px;">        android:width="integer"   描边的宽度
  2. android:color="color"    描边的颜色
  3. android:dashWidth="integer"   必须与下面的dashGap搭配使用缺一不可,也就是说可以两个属性都不用,如果用,两个都必须得用。那么这哥俩有什么作用呢?
  4. 原来是可以实现边框分段的效果,前者指定每段的长度后者指定两端之间的间隙或者说距离。
  5. android:dashGap="integer"   上图说明,如下,灰色部分为背景,黄绿色部分是边框(好恶心的颜色啊,我随便填了几个数出来的)</span>

至此,关于Shape Drawable的大部分功能都介绍完了,快去做出自己的漂亮的UI吧。

Android中Shape的使用的更多相关文章

  1. Android中shape属性详解

    一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标签怎么用. 1.新建shape文件 首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.x ...

  2. 【Android 界面效果19】Android中shape的使用

    Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码:         <shape>      ...

  3. Android 中 shape 图形的使用

    转载于:http://kofi1122.blog.51cto.com/2815761/521605 Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shap ...

  4. Android 中shape的使用(圆角矩形)

    一.在res/drawable文件夹下创建一个名为gradient_box的xml文件: <?xml version="1.0" encoding="utf-8&q ...

  5. 转 Android中shape中的属性大全

    <shape>            <!-- 实心 -->            <solid android:color="#ff9d77"/&g ...

  6. Android中shape中的属性大全

    ---恢复内容开始--- <shape> <!-- 实心 --> <solid android:color="#ff9d77"/> <!- ...

  7. android中shape的属性

    <shape> <!– 实心 –> <solid android:color=”#ff9d77″/> <!– 渐变 –> <gradient an ...

  8. Android中shape的使用 (转载)

    转自:http://blog.csdn.net/ekeuy/article/details/12349853 在看很多开源代码中都使用到了shape,我看代码的时候一般都一带而过了,没有仔细去研究,这 ...

  9. android中shape 的使用

    android 开发中 对于 shape 和 selector的使用,一直都不是很熟练, 记录一下.便于以后参考. 举个项目中例子图 对于上面的2个radiobutton ,背景我们可以让美工做一个. ...

  10. android中shape的使用(android:angle小解)

    本文参考http://kofi1122.blog.51cto.com/2815761/521605和http://blog.csdn.net/qizi329/article/details/63098 ...

随机推荐

  1. Android屏幕适配

    安卓分辨率的相关知识 http://leoray.leanote.com/post/android-resolution Android内存占用公式 系统内存 = 像素宽 * 像素高 * 像素所占用的 ...

  2. python之socket-ssh实例

    本文转载自大王http://www.cnblogs.com/alex3714/articles/5830365.html 加有自己的注释,应该会比原文更突出重点些 一. 基本Socket实例 前面讲了 ...

  3. 权重最小生成树的思想与Kruskal算法

    晚上做携程的笔试题,附加题考到了权重最小生成树.OMG,就在开考之前,我还又看过一遍这内容,可因为时间太紧,也从来没有写过代码,就GG了.又吃了眼高手低的亏.这不,就好好总结一下,亡羊补牢. 权重最小 ...

  4. XML语言基础2 DTD

    XML DTD 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档结构. DTD可被声明于XML文档中,也可以作为一个外部的引用. 内部的DOCTYPE声明 假如D ...

  5. [转]HDFS中JAVA API的使用

    HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...

  6. ligerDialog的使用

    1.通过ViewBag来传值. @if (ViewBag.ReturnMessage != null) 2.脚本代码: 对话框设计与赋值问题. <script type="text/j ...

  7. js快速判断IE浏览器(兼容IE10与IE11)

    在很多时候,我们一般采用navigator.userAgent和正则表达来判断IE浏览器版本,下面介绍用IE浏览器中不同特性来判断IE浏览器   1 判断IE浏览器与非IE 浏览器 IE浏览器与非IE ...

  8. Windows server用好windows server backup,发挥个人电脑该有的系统还原功能

    笔记本上安装windows server的各位是不是有个感触,默认软件升级.软件更新,系统是没有系统还原的(磁盘清理发现也没有还原点可清理),也就是系统出了问题,还原不了干着急. 其实,windows ...

  9. [WPF系列]-基础系列 Property Trigger, DataTrigger & EventTrigger

    So far, we worked with styles by setting a static value for a specific property. However, using trig ...

  10. 帆软报表FineReport中数据连接之Tomcat配置JNDI连接

    1. 问题描述 在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下: ...