shape在Android中的使用

shape用于设定形状,可以在selector,layout,layer-list等里面使用,如果有需求是实现一些简单的几何图形可以用shape来实现。

根据交互设计的需要,可以考虑用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时则显示的是实线。

参考自:

  1. http://blog.csdn.net/dblackde/article/details/7370467
  2. http://blog.csdn.net/evn512457/article/details/20467509
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值