Android中Shape的使用
先看一下文档对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>指定边角的半径,简单的说,数值越大角越圆,数值越小越趋近于直角,参数为:
- android:radius="integer"
- android:topLeftRadius="integer"
- android:topRightRadius="integer"
- android:bottomLeftRadius="integer"
- android:bottomRightRadius="integer"
- android:radius直接指定4个角的半径,另外4个属性可以单独设置4个角的角度
<gradient>的作用是设置颜色渐变,有以下属性
- android:angle="integer" 设置渐变的角度,数值必须为45的倍数,默认为0,即从左到右渐变。当值为90时,从下到上渐变,以此类推当值为180时
- 为270时从上向下渐变。
- android:centerX="integer" 渐变的水平中心点,值为0-1.0
- android:centerY="integer" 渐变的垂直中心点,值为0-1.0
- android:centerColor="integer" 中心的颜色,非必须
- android:endColor="color" 结束渐变时的颜色
- android:gradientRadius="integer" 渐变的半径,仅适用于android:type="radial"时
- android:startColor="color" 开始渐变时的颜色
- android:type=["linear" | "radial" | "sweep"] 渐变的类型,分别为线状、中心放射状、经测试类似于雷达扫描的一种形态(词汇匮乏不知道该怎么翻译,⊙﹏⊙b汗)
- android:usesLevel=["true" | "false"] 貌似是可以被当做level-list用的意思
<padding>是为内容或子标签设置边距,4个属性top、bottom、left、right,需要注意的是这个标签的作用是为内容设置与当前应用此shape的View的边距,而不是设置当前View与父元素的边距。
<size>就不用说了,设置背景大小,width和height俩属性。
<solid
>只有一个属性,即color,设置整个背景的颜色,如果已经定义了渐变色,那么这个属性就无效了。
<stroke>
描边,即设置边框
- <span style="font-size:16px;"> android:width="integer" 描边的宽度
- android:color="color" 描边的颜色
- android:dashWidth="integer" 必须与下面的dashGap搭配使用缺一不可,也就是说可以两个属性都不用,如果用,两个都必须得用。那么这哥俩有什么作用呢?
- 原来是可以实现边框分段的效果,前者指定每段的长度后者指定两端之间的间隙或者说距离。
- android:dashGap="integer" 上图说明,如下,灰色部分为背景,黄绿色部分是边框(好恶心的颜色啊,我随便填了几个数出来的)</span>
至此,关于Shape Drawable的大部分功能都介绍完了,快去做出自己的漂亮的UI吧。
Android中Shape的使用的更多相关文章
- Android中shape属性详解
一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标签怎么用. 1.新建shape文件 首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.x ...
- 【Android 界面效果19】Android中shape的使用
Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码: <shape> ...
- Android 中 shape 图形的使用
转载于:http://kofi1122.blog.51cto.com/2815761/521605 Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shap ...
- Android 中shape的使用(圆角矩形)
一.在res/drawable文件夹下创建一个名为gradient_box的xml文件: <?xml version="1.0" encoding="utf-8&q ...
- 转 Android中shape中的属性大全
<shape> <!-- 实心 --> <solid android:color="#ff9d77"/&g ...
- Android中shape中的属性大全
---恢复内容开始--- <shape> <!-- 实心 --> <solid android:color="#ff9d77"/> <!- ...
- android中shape的属性
<shape> <!– 实心 –> <solid android:color=”#ff9d77″/> <!– 渐变 –> <gradient an ...
- Android中shape的使用 (转载)
转自:http://blog.csdn.net/ekeuy/article/details/12349853 在看很多开源代码中都使用到了shape,我看代码的时候一般都一带而过了,没有仔细去研究,这 ...
- android中shape 的使用
android 开发中 对于 shape 和 selector的使用,一直都不是很熟练, 记录一下.便于以后参考. 举个项目中例子图 对于上面的2个radiobutton ,背景我们可以让美工做一个. ...
- android中shape的使用(android:angle小解)
本文参考http://kofi1122.blog.51cto.com/2815761/521605和http://blog.csdn.net/qizi329/article/details/63098 ...
随机推荐
- RecyclerView-------MainActivity代码
package com.example.administrator.recyclerview; import android.support.v7.app.AppCompatActivity; imp ...
- 一步步搭建react-native环境(苹果OS X)
因重新升级了系统,一步步搭建react-native环境. 1.安装Homebrew 打开终端命令->ruby -e "$(curl -fsSL https://raw.githubu ...
- android 7.0 学习笔记(一)
导读 增强的Doze模式 后台优化 Data Saver 一.增强的Doze模式 Android N对Android M引进的Doze模式进行了进一步的增强,变化体现在两个方面.一方面是降低了进入Do ...
- 从0到1,教你实现基于Ruby的watir-webdriver自动化测试
一.为什么选择Ruby []完全开源. []多平台:Ruby可以运行在Linux, UNIX, Windows, MS-DOS, BeOS, OS/.. []多线程:线程就是指在一个程序中处理若干控制 ...
- 使用xhprof分析php代码性能
推荐在Linux平台使用xhprof,win下xhprof目前稳定版本在php5.5 安装xhprof 下载地址 http://pecl.php.net/get/xhprof-0.9.4.tgz 与p ...
- Jenkins 2.0 要来了
Jenkins 在2016/02/29日发布了2.0 alpha版本,https://jenkins-ci.org/2.0/ , 改进界面,向前兼容,增加新功能: 1.初始化时可以选择推荐插件或自定义 ...
- .NET轻量级RPC框架:Rabbit.Rpc
最近准备写一个.NET的管理平台应用在公司,由于存在大量的Client => Server,Server => Client的请求需求在加上之前一直接触了解过RpcClient组件的开发, ...
- 2015年度总结--javaWeb
注:本来应该前的发,不过过年没有心思管博客了,另外网络也不是很方便,我想可以帮助大家了解一下javaweb吧. 之前的文章中说到,由于要做手机端安卓程序,所以开始使用java.实际上大部分的java程 ...
- 锐捷与Vmare网络冲突解决办法
首先,禁用掉VMare的两个适配器,然后在我的电脑右键管理中找到服务,把VMare的所有服务开起来,并把手动改成自动,最后把VMare的网络设置设置为NAT连接即可.
- 浅谈Linux中的信号处理机制(二)
首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...