我们今天接着来看一下Shape中的stroke属性,stroke其实就是边缘的意思,当我们在定义画笔的时候,有很多时候会用到 FILL 和 STROKE,前者能够画出一个实心的形状,而后者就画出一个空心的图形,所以在这里,stroke表示同样的意思,就是描边。

它只有四个属性:

1)Android:width,表示的是线的粗细。

2)android:color,表示的是线的颜色。

3)android:dashGap,表示的是一条虚线,gap表明是虚线中线与线间的的空隙。

4)android:dashWidth,这个属性表示的是虚线中线的长度,只有设置了dashGap来画一条虚线,这个属性值才能起作用。

代码如下:

[html] view plaincopy 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape="rectangle">
  4. <solid android:color="#CCCCCC"/>
  5. <stroke android:width="1dp" android:color="#FF0000" android:dashWidth="10dp" android:dashGap="2dp"/>
  6. </shape>

下面是效果,

最下面的按钮是把形状态变成了line的格式:

[html] view plaincopy 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape="line">
  4. <solid android:color="#CCCCCC"/>
  5. <stroke android:width="1dp" android:color="#FF0000" android:dashWidth="10dp" android:dashGap="2dp"/>
  6. </shape>

关于stroke的属性其实就这么一点点,没了。

不过我们讲到shape="line“,我们之前做的例子都是rectangle(矩形),oval(椭圆),而line其实就是一条线,可以是虚线,也可以是直线,都是比较简单的。

Android中提供了四种形状,rectangle(矩形),oval(椭圆),line(直线)和 ring(环),前面几种我们其实已经基本说到了,现在就说说最后的ring(环)吧。

先看看xml中的定义,我定义了三个,可以看一下区别:

[html] view plaincopy 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape="ring"
  4. android:useLevel="false">
  5. <gradient android:startColor="#FF0000"
  6. android:endColor="#00FF00"
  7. android:type="linear"/>
  8. <stroke android:width="1dp" android:color="#0000FF"/>
  9. </shape>
  10. <!-- Ring1 -->
  11. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  12. android:shape="ring"
  13. android:innerRadiusRatio="3"
  14. android:thicknessRatio="9"
  15. android:useLevel="false">
  16. ...
  17. </shape>
  18. <!-- Ring2 -->
  19. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  20. android:shape="ring"
  21. android:innerRadiusRatio="2"
  22. android:thicknessRatio="2"
  23. android:useLevel="false">
  24. ...
  25. </shape>
  26. <!-- Ring3 -->
  27. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  28. android:shape="ring"
  29. android:innerRadiusRatio="2"
  30. android:innerRadius="30dp"
  31. android:thicknessRatio="2"
  32. android:useLevel="false">
  33. ...
  34. </shape>

如果我们定义的形状是"ring",我们必须把android:useLevel设为false,不然的话,这个环是显示不出来的。

关于Ring还有几个其特有的属性:

1)innerRadius,设置环内圆的半径。

2)innerRadiusRatio,设置的是内圆半径的比例,默认是3,表明是整个环的宽度的1/3,但是如果我们设置了innerRadius,即具体的宽度的话,这个属性是会被覆盖的。

3)thickness,设置环的厚度。

4)thincknessRatio,设置环的厚度的比较,默认是9,表明是整个环的宽度的1/9,但是如果设置了thickness,同样的,这个属性也会被覆盖的。

(我觉得官文文档那里应该是说反了)

下面是上面定义的4个环的效果图:

第一个是默认的,我们只设置了useLevel=false,其它都是默认值,然后第二个就设置其innerradiusratio = 3 和thicknessratio = 9了。

再从左下角的环,可以看出,设置内径和环的厚度的时候,会先设置内径的区域,而环的厚度如果超过了控件的范围,也就不显示了。

关于shape的基础用法基本就是这样,在更多的时候,我们是结合了layer和shape来实现自定义的效果,比如自定义的进度条,在以后的篇章中,再来慢慢说吧。

本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5435501.html,如需转载请自行联系原作者

关于ShapeDrawable应用的一些介绍(下)相关推荐

  1. 为什么权重初始化要非对称?为什么权重初始化不能全为0?为什么初始化值不能太大或者太小?介绍下He初始化以及Xavier初始化?

    为什么权重初始化要非对称?为什么权重初始化不能全为0?为什么初始化值不能太大或者太小?介绍下He初始化以及Xavier初始化? 目录

  2. 请你介绍下Logistic回归模型?

    请你介绍下Logistic回归模型? 逻辑回归(Logistic Regression)是机器学习中的一种分类模型(注意,不是回归模型,虽然叫logistic Regression),由于算法的简单和 ...

  3. 简单介绍下我使用了一年多还不知道的Sql server 2005 组件知识

    简介 Microsoft SQL Server 2005 是用于大规模联机事务处理 (OLTP).数据仓库和电子商务应用的数据库平台:也是用于数据集成.分析和报表解决方案的商业智能平台. SQL Se ...

  4. python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

    简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...

  5. [html] 常见的浏览器内核都有哪些?并介绍下你对内核的理解

    [html] 常见的浏览器内核都有哪些?并介绍下你对内核的理解 Webkit Blink Gecko Trident 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢 ...

  6. 面试问“请介绍下自己”,应聘者就回了两点,立马勾起HR的兴趣!

    最近对HR日常面试的过程挺感兴趣,就去找了一位HR朋友.那天上午他刚好在面试,我就做旁边看,他已经面试了10几个人了,每个应聘者的自我介绍都是千篇一律的,让他感觉很是无趣. 有时候会对照下简历,要是履 ...

  7. 【Day15】介绍下 promise 的特性、优缺点,内部是如何实现的,动手实现 Promise

    介绍下 promise 的特性.优缺点,内部是如何实现的,动手实现 Promise Promise 基本特性 Promise 的优点 Promise 的缺点 简单代码实现 面试够用版 大厂专供版 Pr ...

  8. 面试题:请介绍⼀下 JMM(Java 内存模型)

    面试题:请介绍⼀下 JMM(Java 内存模型) 关键词 CPU缓存一致性协议(例如MESI),多个CPU核心之间缓存不会出现不同步的问题 Store Buffer.Load Buffer和L1之间却 ...

  9. 请使用webdav_介绍下phpdav的使用功能价值

    说明一下:原测试地址域名没有续费已经废弃,新的测试地址: https://webdav.work:8150/ 我用php开发了一个webdav协议的软件phpdav github地址: xinghan ...

  10. 「图文」介绍下微信怎么拉票刷票及微信投票怎样自己拉票方法

    「图文」介绍下微信怎么拉票刷票及微信投票怎样自己拉票方法,越来越多的人在平常生活中使用微信,以微信为载体的许多功能就被开发和使用了起来,比如--微信投票.于是乎,微信上兴起了各种投票,从小学生到gov ...

最新文章

  1. Windows 7 PE RAM 引导盘及WIM 镜像制作
  2. DSP调试报错:OMAPL138 Connect to PRSC failed
  3. 用cxf开发restful风格的WebService
  4. python查询mysql 乱码_python查询mysql中文乱码问题
  5. bzoj1013球形空间
  6. sublime text3支持Vue语法高亮显示步骤(转)
  7. npm run 脚本背后的事情
  8. 你,下周可否“报上有名”?
  9. 借助财务客户评估解决方案在云中构建AppDev
  10. shell脚本1——变量 $、read、``
  11. WinCE驱动调试助手V2.5
  12. 试设计递归算法dfs traverse_BFS 算法框架套路详解
  13. 六度人和张星亮:SaaS市场要回归TO B本质
  14. 使用Movavi Photo Editor如何向视频中添加转场
  15. 如何生成唯一的Android设备ID?
  16. ECPC-2015部分题解
  17. pdf 转化为jpg python 批量转化
  18. 〖Python 数据库开发实战 - Python与MySQL交互篇⑫〗- 项目实战- 实现新闻管理模块
  19. Spring Boot Post接口数据加解密
  20. C语言:计算阶乘和阶乘的和

热门文章

  1. 【git】 重置文件
  2. PHP 页面编码声明方法详解(header或meta)
  3. 痞子衡嵌入式:第一本Git命令教程(7.1)- 清理之缓存(stash)
  4. javaList容器中容易忽略的知识点
  5. 【设计模式】业务代表模式
  6. 5款非常好用的前端在线编辑器推荐
  7. Python编程系列教程第16讲——拷贝自身到系统目录
  8. nyoj116 士兵杀敌(二)树状数组 插点问线
  9. 设计前沿:16款扁平风格 iOS 7 图标设计
  10. MDSF:在线查看【模型驱动软件工厂】文章汇总