详解Android中Shape的用法

工作中总是会用到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>
    • 效果图这里写图片描述

好了,其实里面的东西很简单,总结一下就好了。希望大家用的开心。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值