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. WiFi网络WPA2 KRACK漏洞分析报告

    作者:东帆@阿里安全技术平台团队 --------   0x00 漏洞概述 安全研究员Mathy Vanhoef发现的WPA2协议的KRA(Key Reinstallation Attacks)漏洞, ...

  2. win10 uwp 反射

    本文在h神的指导下完成. 反射是强大的好用的,我们可以添加新功能不修改之前的代码,通过使用反射得到. 本文下面和大家说如何做一个和WPF一样的反射功能,如何才能获的 UWP 程序集所有类. 先来说下反 ...

  3. maven的java web项目启动找不到Spring ContextLoaderListener的解决办法

    用maven搭建的java web项目,上传到git仓库后,当同事clone下来项目,部署到tomcat运行时,就报了如下错误,即启动web项目时,加载web.xml文件,找不到spring的监听器, ...

  4. JAVA提高十:ArrayList 深入分析

    前面一章节,我们介绍了集合的类图,那么本节将学习Collection 接口中最常用的子类ArrayList类,本章分为下面几部分讲解(说明本章采用的JDK1.6源码进行分析,因为个人认为虽然JDK1. ...

  5. iOS 之 runtime --- 集百家之言

    runtime runtime用在什么地方? 说法 在程序运行过程中,动态的创建一个类(比如KVO的底层实现) 在程序运行过程中,动态地为某个类添加属性.方法,修改属性值\方法(method swiz ...

  6. JS框架设计读书笔记之-节点模块

    节点的创建 浏览器提供了多种手段创建API,从流行程度依次是document.createElement.innerHTML.insertAdjacentHTML.createContextualFr ...

  7. Spring容器组建注解@Component和Resouces实现完全注解配置

    @Resource和@Component实现零XML配置 1.@Resource的注解: @Resource是J2EE的注解.意思是说在容器里面找相应的资源.也可以通过name属性指定它name的资源 ...

  8. ES6新特性 Class的实现

    ES5之前类的继承是靠原型实现的,而这一过程的实现又涉及到一大堆的原型定义,特别是ES5推出了Object.definePorperty()方法后,代码更加晦涩.但是这种方式正是javascript这 ...

  9. 【机器学习实战】第12章 使用FP-growth算法来高效发现频繁项集

    第12章 使用FP-growth算法来高效发现频繁项集 前言 在 第11章 时我们已经介绍了用 Apriori 算法发现 频繁项集 与 关联规则.本章将继续关注发现 频繁项集 这一任务,并使用 FP- ...

  10. scp命令,用来在本地和远程相互传递文件,非常方便

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...