android:shape属性详解
这一类的shape定义在xml中
- file location:
-
res/drawable/filename.xml
The filename is used as the resource ID.(这个文件名作为资源id) - compiled resource datatype:(复杂资源的数据类型)
-
Resource pointer to a
GradientDrawable. - resource reference(资源参考):
-
In Java:
R.drawable.filename
In XML:@[package:]drawable/filename -
syntax:(语法)
<?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="integer"
android:centerY="integer"
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> -
The shape drawable. This must be the root element.
attributes:
-
xmlns:android -
String. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android". -
android:shape -
Keyword. Defines the type of shape. Valid values are:(定义这个类型的形状,变量值是:)
Value Desciption "rectangle"A rectangle (长方形)that fills the containing View. This is the default shape.(这个是默认的形状) "oval"An oval (椭圆形)shape that fits the dimensions of the containing View. "line"A horizontalline that spans the width of the containing View. This shape requires the <stroke>element to define the width of the line."ring"A ring shape.
The following attributes are used only when
android:shape="ring":-
android:innerRadius -
Dimension. The radius for the inner part of the ring (the hole in the middle), as a dimension value or dimension
resource. -
android:innerRadiusRatio -
Float. The radius for the inner part of the ring, expressed as a ratio of the ring's width. For instance, if
android:innerRadiusRatio="5", then the inner radius equals the ring's width divided
by 5. This value is overridden byandroid:innerRadius. Default value is 9. -
android:thickness - Dimension. The thickness of the ring, as a dimension value or dimension resource.
-
android:thicknessRatio -
Float. The thickness of the ring, expressed as a ratio of the ring's width. For instance, if
android:thicknessRatio="2", then the thickness equals the ring's width divided by 2. This value is
overridden byandroid:innerRadius. Default value is 3. -
android:useLevel -
Boolean. "true" if this is used as a
LevelListDrawable.
This should normally be "false" or your shape may not appear.
-
-
<corners> -
Creates rounded corners for the shape. Applies only when the shape is a rectangle.创建圆角的形状。仅适用于当其形状是一个长方形。
attributes:
-
android:radius -
Dimension. The radius for all corners, as a dimension value or dimension resource. This is
overridden for each corner by the following attributes. -
android:topLeftRadius - Dimension. The radius for the top-left corner, as a dimension value or dimension resource.
-
android:topRightRadius - Dimension. The radius for the top-right corner, as a dimension value or dimension resource.
-
android:bottomLeftRadius - Dimension. The radius for the bottom-left corner, as a dimension value or dimension resource.
-
android:bottomRightRadius - Dimension. The radius for the bottom-right corner, as a dimension value or dimension resource.
Note: Every corner must (initially) be provided a corner radius greater than 1, or else no corners are rounded. If you want specific corners to notbe rounded, a work-around is to use
android:radiusto
set a default corner radius greater than 1, but then override each and every corner with the values you really want, providing zero ("0dp") where you don't want rounded corners. -
-
<gradient> -
Specifies a gradient color for the shape.指定一个渐变颜色的形状。
attributes:
-
android:angle - Integer. The angle for the gradient, in degrees. 0 is left to right, 90 is bottom to top. It must be a multiple of 45. Default is 0.
-
android:centerX - Float. The relative X-position for the center of the gradient (0 - 1.0).
-
android:centerY - Float. The relative Y-position for the center of the gradient (0 - 1.0).
-
android:centerColor -
Color. Optional color that comes between the start and end colors, as a hexadecimal value or color
resource. -
android:endColor - Color. The ending color, as a hexadecimal value or color resource.
-
android:gradientRadius -
Float. The radius for the gradient. Only applied when
android:type="radial". -
android:startColor - Color. The starting color, as a hexadecimal value or color resource.
-
android:type -
Keyword. The type of gradient pattern to apply. Valid values are:
Value Description "linear"A linear gradient. This is the default. "radial"A radial gradient. The start color is the center color. "sweep"A sweeping line gradient. -
android:useLevel -
Boolean. "true" if this is used as a
LevelListDrawable.
-
-
<padding> -
Padding to apply to the containing View element (this pads the position of the View content, not the shape).适用于包含填充视图元素(这垫的位置,而不是观点内容的形状)
attributes:
-
android:left - Dimension. Left padding, as a dimension value or dimension resource.
-
android:top - Dimension. Top padding, as a dimension value or dimension resource.
-
android:right - Dimension. Right padding, as a dimension value or dimension resource.
-
android:bottom - Dimension. Bottom padding, as a dimension value or dimension resource.
-
-
<size> -
The size of the shape.
attributes:
-
android:height - Dimension. The height of the shape, as a dimension value or dimension resource.
-
android:width - Dimension. The width of the shape, as a dimension value or dimension resource.
Note: The shape scales to the size of the container View proportionate to the dimensions defined here, by default. When you use the shape in an
ImageView,
you can restrict scaling by setting theandroid:scaleTypeto"center". -
-
<solid> -
A solid color to fill the shape.
attributes:
-
android:color - Color. The color to apply to the shape, as a hexadecimal value or color resource.
-
-
<stroke> -
A stroke line for the shape.
attributes:
-
android:width - Dimension. The thickness of the line, as a dimension value or dimension resource.
-
android:color - Color. The color of the line, as a hexadecimal value or color resource.
-
android:dashGap -
Dimension. The distance between line dashes, as a dimension value or dimension resource. Only
valid ifandroid:dashWidthis set. -
android:dashWidth -
Dimension. The size of each dash line, as a dimension value or dimension resource. Only valid
ifandroid:dashGapis set.
-
-
- example:
-
XML file saved at
res/drawable/gradient_box.xml: -
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>This layout XML applies the shape drawable to a View:
<TextView
android:background="@drawable/gradient_box"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />This application code gets the shape drawable and applies it to a View:
-
Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box); TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);gradient -- 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle 是指从哪个角度开始变。
gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,android:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。solid -- 填充。
solid:实心,就是填充的意思
android:color指定填充的颜色stroke -- 描边。
stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。corners -- 圆角。
corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,方法为:
<corners
android:topRightRadius="20dp" 右上角
android:bottomLeftRadius="20dp" 右下角
android:topLeftRadius="1dp" 左上角
android:bottomRightRadius="0dp" 左下角
/>
这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个不要记错了。padding -- 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。
http://www.cnblogs.com/xiaoQLu/archive/2011/09/14/2176359.html
android:angle网上有各种说法,这里,我说说自己的实验结果,渐变的时候,最原始的,即android:angle=“0”时,是从左到右,按照开始颜色到结束颜色来渲染的,android:angle=“90”是从上到下来渲染的,android:angle=“180”是从右到左来渲染的,android:angle=“360”和android:angle=“0”是一样的,所以这里应该是这样的,渲染时按照最原始的渲染色板(把控件内部看作一块可以绕中心旋转的板子)围绕控件中心来旋转相应的度数,即android:angle里面的值就是所需要旋转的角度,只是这个旋转角度必须是45的整数倍
本文转自:http://blog.csdn.net/qq282133/article/details/7370467
android:shape属性详解的更多相关文章
- Android中shape属性详解
一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标签怎么用. 1.新建shape文件 首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.x ...
- Android之shape属性详解
有时候 ,为了满足一些需求,我们要用到 shape 去定义 一些背景,shape 的用法 跟图片一样 ,可以给View设置 Android:background="@drawable/sha ...
- android:exported 属性详解
属性详解 标签: android 2015-06-11 17:47 27940人阅读 评论(7) 收藏 举报 分类: Android(95) 项目点滴(25) 昨天在用360扫描应用漏洞时,扫描结果, ...
- Android weight属性详解
android:layout_weight是一个经常会用到的属性,它只在LinearLayout中生效,下面我们就来看一下: 当我们把组件宽度设置都为”match_parent”时: <Butt ...
- android布局属性详解
RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_cen ...
- 【转】android布局属性详解
LinearLayout布局: 线性版面配置,在这个标签中,所有元件都是按由上到下的排队排成的.在这个界面中,我们应用了一个 LinearLayout的布局,它是垂直向下扩展的 ,所以创建的布局XML ...
- Android布局属性详解剖析
View的布局显示方式有下面几种: 线性布局(LinearLayout) 相对布局(RelativeLayout) 表格布局(TableLayout) 网格视图(GridView) 标签布局(TabL ...
- android:layout_weight属性详解
weight:重量.权重. 当我们给一个view设置了android:layout_weight属性,意味着赋予它话语权,常规思维就是谁的weight大,谁说了算(空间占比大). 下面我们来看下具体的 ...
- android 布局属性详解
Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料. 第一类:属性值为true或falseandroid:layout_centerHrizontal ...
随机推荐
- [Codeforces]852A - Digits
题目大意:给一个10^200000以内的数字,支持一种操作:在数字之间加若干个加号,把原数字变为加法运算后的结果,要求在三次操作内把数字变成个位数,输出方案. 做法:直观的想法是每两位之间都塞加号,事 ...
- 【网络流】【BZOJ1070】【SCOI2007】修车
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1070 题意:问你如何分配老司机使得每部车的等待时间之和最短. 解题思路:本题不易正做,考虑 ...
- UOJ #11. 【UTR #1】ydc的大树
题目描述: ydc有一棵n个结点的黑白相间的大树,从1到n编号. 这棵黑白树中有m个黑点,其它都是白点. 对于一个黑点我们定义他的好朋友为离他最远的黑点.如果有多个黑点离它最远那么都是它的好朋友.两点 ...
- bzoj1293[SCOI2009]生日礼物 尺取法
1293: [SCOI2009]生日礼物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2838 Solved: 1547[Submit][Stat ...
- SqlServer查询优化方法
MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 文章来源http://bbs.csdn.net/topics/250004467 1.没有索引或者没有用到索引(这是查询慢最常 ...
- C语言中如何调用另一个源文件里的函数
在开发大型项目时,我们常常需要将一份源码分成多个源文件来进行编写,这样可以方便后期的维护.下面就介绍如何从一个源文件里调用另一个源文件的函数. 在源文件A1.c中调用A2.c 中的函数有两种方法: 1 ...
- 利用maven install jar到项目当中
接着上面利用maven打好的jar包.把刚刚打好的包放入其他项目当中怎么办? 只需要在相同的目录下执行mvn install,maven会自动把jar放到本地仓库中. 这样,原先maven项目中缺少依 ...
- SQL使用总结-like,MAX,MIN
1. 时间索引不容许使用like 对时间索引适应like,会时间索引变成字符串操作,成为遍历动作,失去索引价值. 错误写法: EXPLAIN SELECT AVG(data_value) AS av ...
- java读取mysql表的注释及字段注释
/** * 读取mysql某数据库下表的注释信息 * * @author xxx */ public class MySQLTableComment { public static Connectio ...
- Eclipse 一直不停 building workspace完美解决总结
一.产生这个问题的原因多种1.自动升级 2.未正确关闭 3.maven下载lib挂起 等.. 二.解决总结(1).解决方法 方法1.修改eclipse启动文件 eclipse.ini ...