shape在Android中的使用
2016-01-05 14:42
337 查看
shape用于设定形状,可以在selector,layout,layer-list等里面使用,如果有需求是实现一些简单的几何图形可以用shape来实现。
根据交互设计的需要,可以考虑用shape绘制按钮,好处有:
矢量绘制,易于缩放;
字节数更少(一般而言);
基于XML文本,属性值易于调整;
Drawable组件间可嵌套,可重用;
XML与项目其他源代码在一起,便于版本控制。
当然也有缺点:
没有可视化的编辑器,编辑不够直观;
受限于基本的图形和填充方式;
美工人员很难上手。
shape有6个子标签,各属性如下:
shape:形状
共有四种rectangle(矩形),oval(椭圆形),line(线),ring(环),不设置该属性则默认为矩形。
corners:圆角
我们还可以把四个角设定成不同的角度
以上四个属性都已设置时,android:radius属性就会失效。
gradient:渐变
渐变的时候,最原始的,即android:angle=“0”时,是从左到右,按照开始颜色到结束颜色来渲染的,android:angle=“90”是从上到下来渲染的,android:angle=“180”是从右到左来渲染的,android:angle=“360”和android:angle=“0”是一样的,所以这里应该是这样的,渲染时按照最原始的渲染色板(把控件内部看作一块可以绕中心旋转的板子)围绕控件中心来旋转相应的度数,即android:angle里面的值就是所需要旋转的角度,只是这个旋转角度必须是45的整数倍。
默认的渐变模式为android:type=”linear”,即线性渐变,可以指定渐变为径向渐变,android:type=”radial”,径向渐变需要指定半径android:gradientRadius=”50”。
padding:间隔
设置实际内容与控件之间的边距
size:大小
设置图像的大小
solid:填充
填充底色
stroke:描边
当dashWidth属性或者dashGap属性,任意一个设置为0dp时则显示的是实线。
参考自:
/article/1598592.html
/article/8519063.html
根据交互设计的需要,可以考虑用shape绘制按钮,好处有:
矢量绘制,易于缩放;
字节数更少(一般而言);
基于XML文本,属性值易于调整;
Drawable组件间可嵌套,可重用;
XML与项目其他源代码在一起,便于版本控制。
当然也有缺点:
没有可视化的编辑器,编辑不够直观;
受限于基本的图形和填充方式;
美工人员很难上手。
shape有6个子标签,各属性如下:
<?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:形状
android:shape="rectangle" //设置形状
共有四种rectangle(矩形),oval(椭圆形),line(线),ring(环),不设置该属性则默认为矩形。
corners:圆角
android:radius="20dp"为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度
android:topRightRadius="20dp" //右上角 android:bottomLeftRadius="20dp" //右下角 android:topLeftRadius="1dp" //左上角 android:bottomRightRadius="0dp" //左下角
以上四个属性都已设置时,android:radius属性就会失效。
gradient:渐变
android:startColor="@android:color/white" //起始颜色 android:centerColor="@android:color/black" //中心颜色 android:endColor="@android:color/black" //结束颜色 android:angle="45" //渐变角度(必须为45的倍数) android:type="radial" //渐变类型 android:centerX="0" //中心点的X坐标(0-1.0) android:centerY="0" //中心点的Y坐标(0-1.0) android:gradientRadius="90" //径向渐变指定半径
渐变的时候,最原始的,即android:angle=“0”时,是从左到右,按照开始颜色到结束颜色来渲染的,android:angle=“90”是从上到下来渲染的,android:angle=“180”是从右到左来渲染的,android:angle=“360”和android:angle=“0”是一样的,所以这里应该是这样的,渲染时按照最原始的渲染色板(把控件内部看作一块可以绕中心旋转的板子)围绕控件中心来旋转相应的度数,即android:angle里面的值就是所需要旋转的角度,只是这个旋转角度必须是45的整数倍。
默认的渐变模式为android:type=”linear”,即线性渐变,可以指定渐变为径向渐变,android:type=”radial”,径向渐变需要指定半径android:gradientRadius=”50”。
padding:间隔
设置实际内容与控件之间的边距
android:bottom="2dp" //下边距 android:left="2dp" //左边距 android:right="2dp" //右边距 android:top="2dp" //上边距
size:大小
设置图像的大小
android:height="50dp" //高 android:width="50dp" //宽
solid:填充
填充底色
android:color="@android:color/white" //底色
stroke:描边
android:width="20dp" //设置边边的宽度 android:color="@android:color/black" //设置边边的颜色 android:dashWidth="2dp" //设置虚线的宽度 android:dashGap="20dp" //设置虚线的间隔宽度
当dashWidth属性或者dashGap属性,任意一个设置为0dp时则显示的是实线。
参考自:
/article/1598592.html
/article/8519063.html
相关文章推荐
- Android SQLite3命令详解
- Android系统学习计划
- Android很有用的代码片段
- 解决adb push ODEX 后缀文件不生效的问题
- Android开发—使用已有的sql数据库
- Android NDK开发之 arm_neon.h文件ABI说明
- Android开发学习笔记:Service的简介和启动方式
- android DatePicker 点击文本框,禁止弹出键盘
- android中饼状图的实现方法
- 通过settings.db自定义Android系统默认设置
- Android开发学习笔记:Intent的简介以及属性的详解
- Android NDK开发之 NEON使用介绍
- Android使用Fragment打造万能页面切换框架
- Android压缩图片到100K以下并保持不失真的高效方法
- android studio 生成 aidl 文件
- Android开发中无处不在的设计模式——装饰者模式
- android集成开发环境搭建
- android glide的一些基本用法
- Android应用正确使用扩展SD卡,特别是安卓4.4以后的版本
- GitHub 优秀的 Android 开源项目