Android中Shape的用法详解
ShapeDrawable是一种很常见的Drawable,可以理解为通过颜色来构造的图形,它既可以是纯色的图形,也可以是具有渐变效果的图形,ShapeDrawabled语法稍显复杂,如下所示:
<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>
•Android: shape
•有4个选项,rectangle(矩形)oval(椭圆)line(横线)ring(圆环),默认为rectangle,需要注意line和ring需要通过标签来指定线的宽度和颜色等信息,否则无法达到预期效果
•首先来说一下最常用的rectangle(矩形),一般都是在按钮或者字体上面设置一个background的Drawable。一般设置效果为正方形或者两边有弧度的形状。
◦第一种情况就是设置矩形背景
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="200dp" android:height="20dp" /> <solid android:color="#d22121"/> </shape>
通过设置size设置矩形的宽度和高度,*这里需要说明一下,咱们在这里设置size的宽高,在最终显示尺寸是没有用的,也就是说当你在一个控件中设置background的时候,这个shape是会被拉伸或者缩小为view的大小。*solid属性设置矩形里面的背景颜色。
将背景色设置为渐变
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="200dp" android:height="20dp" /> <gradient android:startColor="#fff" android:centerColor="#f1a9a9" android:endColor="#ec5b5b" android:type="linear" /> </shape>
效果图:
这里默认的type就是linear,里面还有其他两个属性可以选择分别是radial(径向渐变)和sweep(扫描渐变)
一般最常用的也就是线性渐变还有其他几个属性没有用但是很好理解
android:angle——渐变的角度,默认为0,其值必须是45的倍数,0表示从左到右,90表示从下到上。
android:centerX——渐变的中心点横坐标
android:centerY——渐变的中心点纵坐标
android:gradientRadiu——渐变半径,仅当android:type=”radial”时有效
•接下来说一下画圆角的矩形背景
◦其实只用设置一下corners的属性就是了。
◦具体详细的说明
◦android:radius—— 给四个角设置相同的角度,优先级较低,会被其他四个属性覆盖
android:bottomLeftRadius——设定左下角的角度
android:bottomRightRadius——设定右下角的角度
android:TopLeftRadius——设定左上角的角度
android:TopRightRadius——设定右上角的角度
接下来就是如何画一个空心的背景
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="200dp" android:height="20dp" /> <stroke android:width="1px" android:color="#ffff1c77" /> <corners android:radius="50dp"/> </shape>
效果图如下
当然里面也可以自由发挥设置渐变色,但是一般里面都纯色。
◦这里里面也可以设置为虚线
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="200dp" android:height="20dp" /> <stroke android:dashWidth="4dp" android:dashGap="2dp" android:width="1px" android:color="#ffff1c77" /> <corners android:radius="50dp"/> </shape>
好了,其实里面的东西很简单,总结一下就好了。希望大家用的开心。
- Arxiv网络科学论文摘要14篇
- 工信部:网络强国建设2018年重点工作任务
- 刚刚!张小龙再出重磅!微信小程序掀起新零售红利狂潮!
- 无人驾驶系列——深度学习笔记:Tensorflow的安装-windows系统
- 2018年12大顶级云安全威胁
- 缤果盒子为域名意识打call 六位数秒下bingobox.com
- 用Qt写软件系列二:QCookieViewer(浏览器Cookie查看器)
- 用Qt写软件系列一:QCacheViewer(浏览器缓存查看器)
- 用Qt写软件系列三:一个简单的系统工具(上)
- ChartDirector应用笔记(三)
- 汇编语言 手记9
- 程序员一年写百万行代码是什么体验?这肯定是个Bug
- ChartDirector应用笔记(二)
- ChartDirector应用笔记(一)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Hystrix讲解与应用
- NBA球员投篮数据可视化。
- 「Workshop」第十九期:Markdown与RMarkdown最佳入口
- S1到S9,545名职业选手,有多少人折戟全球总决赛?
- 「R」数据可视化21: Edge Bunding图
- 一个服务器能干什么?
- 按照说明做了 ,还是没有点亮网关,一直离线模式
- iOS音视频接入-快速集成TRTC SDK
- 基于Flink快速开发实时TopN程序最简单的思路
- MySQL+Flask,在本地实现一个API接口。
- Java新特性:数据类型可以扔掉了?
- 使用Flask在服务器实现一个API接口。
- 深入理解谷歌最强V8垃圾回收机制
- 用Python下载抖音无水印视频!
- 多年管理系统开发经验总结~代码解决方案