开发艺术探索之Drawable之ShapeDrawable

  • 前言
  • ShapeDrawable的结构
  • shape(形状)
  • corners(表示shape的四个圆角的角度,只适用于矩形)
  • gradient(渐变效果,与<solid>纯色填充是互相排斥的)
  • padding(与四周空白的距离)
  • size(图形的固有大小,非最终大小)
  • solid(纯色填充)
  • stroke(描边)

前言

使用shape标签定义的 Drawable,可以理解为颜色来构造的图,他可以很方便得到一个矩形,圆,椭圆,圆环,很容易维护和修改,实现虚线、实线,矩形 有/无边框,虚线边框,实线边框,有/无填充颜色,矩形圆角,渐变(线性渐变,径向渐变,扫描渐变)。他的实体类类型对应是GradientDrawable。

各种效果,请移步博客:【Android XML shape 标签使用详解】

免写shape.xml,通过标签直接生成shape:【github:BackgroundLibrary】

ShapeDrawable的结构

根节点<shape>,子节点<corners><gradient><padding><size><solid><stroke>

<?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:topLeftRaidus="integer"
        android:topRightRaidus="integer"
        android:bottomLeftRaidus="integer"
        android:bottomRightRaidus="integer" />
    <gradient
        android:angle="integer"
        android:centerX="integer"
        android:centerY="integer"
        android:centerColor="color"
        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

  • line ==> 线(必须通过<stroke>标签来指定线的宽度和颜色等信息。)
  • rectangle ==> 矩形(包括圆角矩形)
  • oval ==> 椭圆,圆
  • ring ==> 圆环(必须通过<stroke>标签来指定线的宽度和颜色等信息。)

ring还有五个特殊的属性

corners

表示shape的四个圆角的角度,只适用于矩形。

  • android:radius:为四个角同事设定相同的角度。优先级比以下4个属性要低。
  • android:topLeftRadius:左上角的角度。
  • android:topRightRadius:右上角的角度。
  • android:bottomLeftRadius:左下角的角度。
  • android:bottomRightRadius:右下角的角度。

gradient

渐变效果,与<solid>纯色填充是互相排斥的。

  • android:angle:渐变的角度。(默认为0。值必须为45的倍数。0表示从左到右,90表示从下到上。)
  • android:centerX:渐变的中心点的X坐标。
  • android:centerY:渐变的中心点的Y坐标。
  • android:startColor:渐变的起始色。
  • android:centerColor:渐变的中间色。
  • android:endColor:渐变的结束色。
  • android:gradient:渐变半径。仅当android:type="radial"时有效。
  • android:useLevel:一般为false,当Drawable作StateListDrawable时为true。
  • android:type:渐变的类别。可选值:
    • linear(线性渐变):默认
    • radial(径向渐变):需要配合android:gradient属性一起使用。
    • sweep(扫描线渐变)

padding

与四周空白的距离(left、top、right、bottom)

size

图形的固有大小,非最终大小。(widthheight分别设定shape的宽/高)

solid

纯色填充

  • color:指定填充的颜色。

stroke

描边

  • width:描边的粗细
  • color:描边的颜色
  • dashWidth:组成虚线的线段的宽度
  • dashGap:组成虚线的线段之间的间隔,间隔越大,虚线看起来的空隙越大
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值