运用shape绘制图形
来源:互联网 发布:linux用户权限文件 编辑:程序博客网 时间:2024/06/08 00:36
shape的作用
在Android程序开发中,我们有时想使用特别的图形,而android studio中提供的图形有限,这时就可以使用Shape这个东西去定义各种各样的形状,Android允许通过xml定义资源,常见的有string、id、integer、dimen等、也可以定义一些图片资源。用shape可以做几何的矢量图,使界面更加有特色。
shape的基本语法
我们可以先看官方文档中的shape基本语法示例:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners android:radius="integer" android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient android:angle="integer" android:centerX="float" android:centerY="float" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size android:width="integer" android:height="integer" /> <solid android:color="color" /> <stroke android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /></shape>
shape的根节点
shape的属性:
android:shape=["rectangle" | "oval" | "line" | "ring"] > //表示通过当前shape定义出一个什么形状
注意:仅当 android:shape=”ring” 如下时才使用以下属性:
android:innerRadius //尺寸。环内部(中间的孔)的半径,以尺寸值或尺寸资源表示。 android:innerRadiusRatio //浮点型。环内部的半径,以环宽度的比率表示。例如,如果 android:innerRadiusRatio="5",则内半径等于环宽度除以 5。此值被 android:innerRadius 覆盖。默认值为 9。 android:thickness //尺寸。环的厚度,以尺寸值或尺寸资源表示。 android:thicknessRatio //浮点型。环的厚度,表示为环宽度的比率。例如,如果 android:thicknessRatio="2",则厚度等于环宽度除以 2。此值被 android:innerRadius 覆盖。默认值为 3。 android:useLevel //布尔值。如果这用作 LevelListDrawable,则此值为“true”。这通常应为“false”,否则形状不会显示。
shape的子节点
在shape的根节点下还包含如下图表的子节点:
注意:solid 和gradient一般只使用一个,因为如果在代码中同时定义了solid和gradient,后定义的会覆盖先定义的一个。
corners 圆角
(注:只有当根节点的shape取值是rectangle时有效)
corners有5个属性如下:
android:radius //尺寸 所有角的半径,以尺寸值或尺寸资源表示。对于每个角,这会被以下属性覆盖。 android:topLeftRadius //尺寸 左上角的半径,以尺寸值或尺寸资源表示。 android:topRightRadius //尺寸 右上角的半径,以尺寸值或尺寸资源表示。 android:bottomLeftRadius //尺寸 左下角的半径,以尺寸值或尺寸资源表示。 android:bottomRightRadius //尺寸 右下角的半径,以尺寸值或尺寸资源表示。
效果图: 也可绘制圆形:
注意:(最初)必须为每个角提供大于 1 的角半径,否则无法产生圆角。如果希望特定角不要倒圆角,解决方法是使用 android:radius 设置大于 1 的默认角半径,然后使用实际所需的值替换每个角,为不希望倒圆角的角提供零(“0dp”)
gradient 指定形状的渐变颜色
可以指定渐变的角度、颜色和类型,通过以下属性来控制:
android:angle //整型 渐变的角度(度)。0 为从左到右,90 为从上到上。必须是 45 的倍数。默认值为 0。 android:centerX //浮点型 渐变中心的相对 X 轴位置 (0 - 1.0)。 android:centerY //浮点型 渐变中心的相对 Y 轴位置 (0 - 1.0)。 android:centerColor //颜色 起始颜色与结束颜色之间的可选颜色,以十六进制值或颜色资源表示。 android:endColor //颜色 结束颜色,表示为十六进制值或颜色资源。 android:gradientRadius //浮点型 渐变的半径。仅在 android:type="radial" 时适用。 android:startColor //颜色 起始颜色,表示为十六进制值或颜色资源。 android:type /*关键字 要应用的渐变图案的类型。有效值为: 值 说明 "linear" 线性渐变。这是默认值。 "radial" 径向渐变。起始颜色为中心颜色。 "sweep" 流线型渐变*/ android:useLevel //布尔值。如果这用作 LevelListDrawable,则此值为“true”。
效果如图:
solid 用于填充形状的纯色
android:color //颜色 应用于形状的颜色,以十六进制值或颜色资源表示。
效果如图:
stroke 形状的笔划中线
控制边线的宽度、颜色和间距,有如下属性:
android:width //尺寸 线宽,以尺寸值或尺寸资源表示。 android:color //颜色 线的颜色,表示为十六进制值或颜色资源。 android:dashGap //尺寸 短划线的间距,以尺寸值或尺寸资源表示。仅在设置了 android:dashWidth 时有效。 android:dashWidth //尺寸 每个短划线的大小,以尺寸值或尺寸资源表示。仅在设置了 android:dashGap 时有效。
效果如图:
size 形状的大小
定义图形的大小,有如下属性:
android:height //尺寸 形状的高度,表示为尺寸值或尺寸资源 android:width //尺寸 形状的宽度,表示为尺寸值或尺寸资源
小图片效果: 大图片效果:
注意:默认情况下,形状按照此处定义的尺寸按比例缩放至容器视图的大小。在 ImageView 中使用形状时,可通过将 android:scaleType 设置为 “center” 来限制缩放。
padding 要应用到包含视图元素的内边距
控制图形的边距,有如下属性:
android:left //尺寸 左内边距,表示为尺寸值或尺寸资源 android:top //尺寸 上内边距,表示为尺寸值或尺寸资源 android:right //尺寸 右内边距,表示为尺寸值或尺寸资源 android:bottom //尺寸 下内边距,表示为尺寸值或尺寸资源
添加padding前: 添加padding后:
这会填充视图内容的位置,而非形状
作者:叶晓晖:原文地址
- 运用shape绘制图形
- 运用shape绘制图形
- shape 绘制图形
- Android shape 绘制图形笔记
- html5运用js绘制图形
- Graphics2D & Shape - 绘制2D图形
- Android中用Shape绘制空心图形
- Android 编程下 shape 绘制图形
- Android 编程下 shape 绘制图形
- Android 编程下 shape 绘制图形
- Android shape方法绘制图形的方法和属性解析
- Android中使用自定义View实现shape图形绘制
- Android开发——Drawable绘制图形之Shape
- Shape图形
- 实习入职第十六天:Android 编程下 shape 绘制图形
- Android shape drawable XML 可绘制图形的创建与使用
- Android shape drawable XML 可绘制图形的创建与使用
- Shape--------详解和运用
- xyPop
- hihocoder 网络流二·最大流最小割定理
- 图解JSP与Servlet的关系
- Vim编辑器如何使用复制、移动及删除操作
- Redis学习笔记10--Redis主从复制
- 运用shape绘制图形
- PHP之mysqli的使用
- Fliter-----补6-16
- Servlet&JSP 第八章 自定义标签
- ssm(springmvc4+spring4+mybatis3)整合实战-个人博客系统-util介绍与开发首页
- vim命令
- Leetcode 8 String to Integer (atoi)
- 解读JavaScript之this
- Linux内核:关于中断你需要知道的【转】