android中shape的使用介绍 1--常用属性

1 先来看一下官方文档中的shape基本语法示例:

  • 下面的示例代码中:integer, float , color 表示对应属性的取值类型
  • ["rectangle" | "oval" | "line" | "ring"],像这种用中括号括起来的并用 | 间隔的,表示当前属性可以取的值是其中的任意一个
<?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="float"
        android:centerY="float"
        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>

2 详细解析

(1)shape根节点

1)根节点使用shape,其属性主要有:
  • android:shape

    • 表示通过当前shape定义出一个什么形状,
    • 取值有四种,分别是: rectangle 矩形, oval 椭圆,ring 环形 ,line 线

    以下几个属性只有在shape取值是ring(环形)时有效

  • android:innerRadius
    • 环形的内半径,
    • 单位dp,也可以直接引用dimensions中定义的dp值
  • android:innerRadiusRatio
    • 环形的内半径
    • 取值float,
    • 注意,
      • 这里的ratio比率是相对于当前屏幕的宽度来说的,比如,android:innerRadiusRatio="5",就表示环形的内半径是当前屏幕宽度的1/5
      • innerRadius 和innerRadiusRatio两个属性都是控制环的内半径,所以,要么都不指定,要么同时只指定一个;如果都不指定的话,默认取innerRadiusRatio,值3,也就是说,此时内半径是屏幕宽度的1/3
  • android:thickness
    • 表示环的厚度,
    • 单位dp,也可以直接引用dimensions中定义的dp值
  • android:thicknessRatio
    • 环形的内半径
    • 取值float,
    • 注意,
      • 这里的ratio比率是相对于当前屏幕的宽度来说的,比如,android:thicknessRatio="5",就表示环形的厚度是当前屏幕宽度的1/5
      • thicknessthicknessRatio两个属性都是控制环的厚度,所以,要么都不指定,要么同时只指定一个;如果都不指定的话,默认取thicknessRatio,值9,也就是说,此时环的厚度是屏幕宽度的1/9
  • android:useLevel
    • 取值类型Boolean.
    • 通常取false,如果想显示ring(环形)也必须设置为false,如果不设置false,将无法显示ring(同时,如果想显示ring还要设置solid固定色或者gradient渐变色。如果不设置颜色,默认背景透明,还是看不见)
    • 如果要将当前shape作为 LevelListDrawable 就需要设置为true。(截止到目前我没用过true)
2)shape根节点中又包含如下几个子节点:
     - corners     圆角 (该属性只针对shape取值为rectangle时有效)
     - gradient    渐变色(形状中的颜色渐变)
     - solid       填充色/固定色
     - stroke      边线(就是形状最边缘的描线)
     - size        尺寸大小(一般不用定义)
     - padding     内容距shape边界的距离(即边距。注意,因shape一般用做背景,所以这里的内容指的是以shape为背景的控件。用的比较少)

注意:

  • solid 和gradient一般只使用一个,因为如果在代码中同时定义了solid和gradient,后定义的会覆盖先定义的一个。

(2)shape的子节点

1)corners 圆角
  • 只有当根节点的shape取值是rectangle时有效

属性有五个,分别是:

 - radius  全部角的半径
 - android:topLeftRadius 左上角的半径
 - android:topRightRadius 右上角的半径
 - android:bottomLeftRadius  左下角的半径
 - android:bottomLeftRadius 右下角的半径

 取值单位 dp ,可以直接赋值,也可以引用dimensions中的值
 一般要么使用radius直接定义全部角的半径,要么就分别控制四个角的半径
2)solid 填充色/固定色

属性只有一个color,可以直接赋给它十六进制的颜色值(如#ff0000),也可以引用color文件中的颜色值

3)stroke 边线

属性如下:

  • android:width
    • 边线的厚度
    • 单位dp,可以直接赋值,也可以引用dimensions中的值
  • android:color
    • 边线的颜色
    • 可以取16进制的颜色值,也可以引用color文件中的值
  • android:dashWidth
    • 将边线分段,每条线段的宽度(也就是虚线)
    • 单位dp ,可以直接赋值,也可以引用dimensions中的值
  • android:dashGap
    • 线段与线段之间的间距
    • 单位dp ,可以直接赋值,也可以引用dimensions中的值
4)gradient 渐变色

可以设置渐变的颜色,以及渐变的类型(线性渐变,放射渐变,扫描渐变)
主要属性有:

  • android:type
    • 渐变的类型
    • 取值有
      • linear 线性渐变,默认的渐变类型
      • radial 放射渐变,必须配合 android:gradientRadius 一起用
      • sweep 扫描性渐变
  • android:angle
    • 渐变的角度,只有线性渐变时才有效,
    • 取值integer,且必须是45的倍数,默认是0,0表示从左到右渐变,45表示从左下到右上,90表示从下到上,135 右下到左上,180 从右到左,225 右上左下, 270 上下 ,315 左上右下 ,360同 0
  • android:centerX

    • 渐变中心的相对X轴坐标,radial放射渐变时才有效,
    • 取值float,且在0.0到1.0之间,默认为0.5,表示在正中间
  • android:centerY

    • 渐变中心的相对Y轴坐标,radial放射渐变时才有效,
    • 取值float,且在0.0到1.0之间,默认为0.5,表示在正中间
  • android:gradientRadius
    • 渐变的半径,只有渐变类型为radial时才使用,而且必须使用
    • 取值float
  • android:startColor 起始时的颜色
  • android:endColor 结束时的颜色
  • android:centerColor 起始和结束中间的过渡颜色
    • 以上三个颜色可以取16进制的颜色值,也可以引用color文件中的值

参考:官方文档–shape

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CnPeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值