1. 各属性的配置语法

在项目 res/drawable 文件夹中创建一个以 shape 为根节点的 XML 文件,基本语法如下:

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] // 4种形状分别为: 矩形、椭圆、线、圆环
android:innerRadius="integer" // 形状为圆环时的 圆环内半径
android:thickness="integer" // 形状为圆环时是 圆环的厚度 (外半径 - 内半径)
android:useLevel=["true" | "false"]> // 通常为 false, 否则可能图形不显示 <!-- 宽高尺寸(如果没指定, 通常跟随控件的宽高) -->
<size
android:width="integer"
android:height="integer" /> <!-- 形状的颜色 -->
<solid
android:color="color" /> <!-- 形状的颜色(用多种颜色梯度渐变来表示, 会被上面的 solid 元素指定的颜色会相互覆盖) -->
<gradient
android:startColor="color" // 渐变的开始颜色
android:centerColor="integer" // 渐变的中间过渡颜色
android:endColor="color" // 渐变的结束颜色
android:centerX="float" // 渐变开始的中心点X坐标(相对于形状的宽度), 值范围 0.0 ~ 1.0
android:centerY="float" // 渐变开始的中心点Y坐标(相对于形状的高度), 值范围 0.0 ~ 1.0
android:angle="integer" // 渐变方向的角度, 0 为从左到右, 90 为从下到上, 该值必须为 45 的倍数
android:gradientRadius="integer" // 渐变的圆半径, 仅在 android:type="radial" 时适用
android:type=["linear" | "radial" | "sweep"] // 渐变的类型, 分别为: 线性渐变(默认)、径向渐变、流线型渐变
android:useLevel=["true" | "false"] /> // 如果形状用作 LevelListDrawable, 则此值为 true; 一般为false <!-- 边框 -->
<stroke
android:width="integer" // 边框的厚度
android:color="color" // 边框的颜色
android:dashWidth="integer"
android:dashGap="integer" /> <!-- 4个角的角度半径 -->
<corners
android:radius="integer" // 统一设置4个角的角度半径, 会被下面具体某个角覆盖
android:topLeftRadius="integer" // 左上角 角度半径
android:topRightRadius="integer" // 右上角 角度半径
android:bottomLeftRadius="integer" // 左下角 角度半径
android:bottomRightRadius="integer" /> // 右下角 角度半径 <!-- 内边距 -->
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" /> </shape>

PS: 如果需要空心的形状,则必须指明 solid 颜色为透明色,否则某些机器系统中可能会出现黑底。

2、在项目 res/layout 布局文件中引用:

<ImageView
android:layout_width="300dp"
android:layout_height="300dp"
android:src="@drawable/my_shape"/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/my_shape"/>

3. 具体形状的配置

1、矩形 ( rectangle )

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> <!-- 边框 -->
<stroke
android:color="#00FF00"
android:width="3dp"/> <!-- 矩形梯度颜色 -->
<gradient
android:startColor="#FF0000"
android:centerColor="#FFFF00"
android:endColor="#0000FF"
android:angle="90"/> <!-- 4 个角的角度半径 -->
<corners
android:bottomLeftRadius="20dp"
android:topRightRadius="20dp"/> </shape>


2、椭圆 ( oval )

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"> <!-- 尺寸(如果宽高相同, 则便是圆) -->
<size
android:width="200dp"
android:height="130dp"/> <!-- 边框 -->
<stroke
android:color="#00FFFF"
android:width="1dp"/> <!-- 矩形梯度颜色(如果需要椭圆环, 可以用 solid 指定形状颜色为透明) -->
<gradient
android:startColor="#FF0000"
android:centerColor="#FF00FF"
android:endColor="#FFFF00"
android:type="sweep"/> </shape>


3、线段( line )

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line"> <!-- 如果指定尺寸, 则线段为该尺寸宽高的矩形中间的一条线, 没有指定则跟随控件宽高 -->
<size
android:width="200dp"
android:height="100dp"/> <!-- 线段的 颜色 和 线宽(厚度) 由 stroke 元素指定-->
<stroke
android:color="#000000"
android:width="5dp"/> </shape>


4、圆环 ( ring )

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="90dp"
android:thickness="5dp"
android:useLevel="false"> <!-- 圆环颜色 -->
<solid
android:color="#FF0000"/> </shape>

PS: 通过配置空心椭圆也可以达到圆环的效果

android shape 大全 (转)的更多相关文章

  1. Android shape与selector标签使用

    原文地址:Android shape与selector标签使用 Android中提供一种xml的方式,让我们可以自由地定义背景,比较常用的就是shape标签和selector标签 shape shap ...

  2. android shape使用总结

    今天使用到shape,这个里面有很多属性,在这里我记录一下各个属性的使用的情况以及所代表的意思 <?xml version="1.0" encoding="utf- ...

  3. android 权限大全

    教程 博客 淘帖     论坛›eoe·Android开发资源区›Android开发实例教程 191507 12 / 2 页下一页 android 权限大全 『癲瘋霸気』 于 2013-4-3 10: ...

  4. android:shape

    android:shape=["rectangle" | "oval" | "line" | "ring"] shape ...

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

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  6. android shape详解

    shape--> shape属性: rectangle: 矩形,默认的形状,可以画出直角矩形.圆角矩形.弧形等 solid: 设置形状填充的颜色,只有android:color一个属性 andr ...

  7. android shape(如自定义Button)

    Shape 前言:有时候会去自己去画一些Button的样式来展现在UI当中,其中主要用到的就是Shape 先来看一段代码: <?xml version="1.0" encod ...

  8. android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)

    shape使用.渐变色.分割线.边框.半透明.半透明阴影效果. 首先简单了解一下shape中常见的属性.(详细介绍参看  api文档 ) 转载请注明:Rflyee_大飞: http://blog.cs ...

  9. Android Shape画圆,矩形

    画圆环代码如下: 画圆环,外边的边界宽度大一点即可: <?xml version="1.0" encoding="utf-8"?> <shap ...

随机推荐

  1. YYHS-NOIP模拟赛-gcd

    题解 这道题题解里说用莫比乌斯反演做(我这个蒟蒻怎么会做呢) 但是不会,所以我们另想方法,这里我们用容斥来做 我们先把500000以内的所有质数筛出来 每次读入编号的时候,先把编号对应的这个数分解质因 ...

  2. WPF popup置顶

    在程序写一个popup发现他会在置顶,在网上找了两大神代码http://www.cnblogs.com/Leaco/p/3164394.html http://blog.csdn.net/baijin ...

  3. Linux入门(8)——Ubuntu16.04安装sublime text 3并配置Python开发环境

    打开终端,添加sublime text 3的仓库: 按enter键继续 更新软件库: sudo apt-get update 安装Sublime Text 3: sudo apt-get instal ...

  4. Ubuntu系统下的实用软件推荐

    想要在ubuntu下工作? 又担心影响效率? 这些软件可以帮助你解决问题 ! 基本在windows上可以做到的功能, 在linux中也同样能够实现,而且自己寻找解决方案的过程才是最有趣的! 1.gua ...

  5. LINUX 笔记-文本过滤

    ^                        只匹配行首 $                       只匹配行尾 *                        一个单字符后紧跟*,匹配0个 ...

  6. 深入理解Java虚拟机--中

    深入理解Java虚拟机--中 第6章 类文件结构 6.2 无关性的基石 无关性的基石:有许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码(ByteCode),从而 ...

  7. ps之雪碧图制作

    图片拖入后 一般取同行同列最高最宽 自动在所选目录生成 打开: 修改 四次请求有点多啊. 打开 css sprite 自动生成坐标地址. 不过我们要把它排远一点 OK了. 我们生成以后: 坐标地址就可 ...

  8. .12-Vue源码之patch(2)

    快完事咯! 简单看了下patch函数,虽然不长,但是实际上很长很长,慢慢来吧, 首先来个总览: // line-5250 // oldVnode => 原生DOM节点 // vnode => ...

  9. web端/h5端账号密码的安全性问题

    firefox一直提示让浏览器记住密码会有安全问题,但是一直未曾关注过到底是什么安全问题. 国庆节回家后发生的一件小事,让我深刻认识到让浏览器记住密码有多么不安全. 事情的起因是这样,家里wifi信号 ...

  10. Go Deeper

    Go Deeper Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Sub ...