Android之shape的使用

背景

Android开发中,使用shape标签可以很方便的帮助我们自定义绘制简单的形状,一般可用于绘制控件的背景,如按钮或文本框背景,也经常用于设置布局的背景,其用法不难但是功能作用却很强大。相对于png图片来说,使用shape可以减少安装包的大小,而且能够更好的适配不同的手机。

XML定义

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadius="15dp"
    android:innerRadiusRatio="2"
    android:shape="ring"
    android:thickness="10dp"
    android:thicknessRatio="2"
    android:useLevel="false">

    <!-- 填充 -->
    <solid android:color="@color/red" />

    <!-- 圆角 -->
    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
        android:radius="10dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" />

    <!-- 渐变 -->
    <gradient
        android:angle="45"
        android:centerColor="@color/red"
        android:centerX="0"
        android:centerY="0"
        android:endColor="@color/black"
        android:gradientRadius="90"
        android:startColor="@color/blue"
        android:type="radial"
        android:useLevel="false" />

    <!-- 间隔 -->
    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" />

    <!-- 大小 -->
    <size
        android:width="75dp"
        android:height="45dp" />

    <!-- 描边 -->
    <stroke
        android:width="1dp"
        android:color="@color/blue"
        android:dashGap="2dp"
        android:dashWidth="0dp" />
</shape>

属性

solid:填充
1. android:color:填充的颜色。

corners:圆角
1. android:radius:设置四个角的圆角半径。
2. android:bottomLeftRadius:设置左下角的圆角半径。
3. android:bottomRightRadius:设置右下角的圆角半径 。
4. android:topLeftRadius:设置左上角的圆角半径 。
5. android:topRightRadius:设置右上角的圆角半径 。
注:如果同时设置五个属性,则radius属性无效。

gradient:渐变
1. android:startColor:起始渐变颜色。
2. android:centerColor:中间渐变颜色。
3. android:endColor:结束渐变颜色。
4. android:centerX:渐变中心X的相对位置,放射渐变时才有效,范围为0~1,默认为0.5,表示在正中间。
5. android:centerY:渐变中心Y的相对位置,放射渐变时才有效,范围为0~1,默认为0.5,表示在正中间。
6. android:type:渐变类型,有三种:radial放射渐变;linear线性渐变,默认为此渐变模式;sweep扫描性渐变。
7. android:angle:渐变角度,必须是45的整数倍(包括0),0表示从左到右,90表示从下到上。
8. android:gradientRadius:渐变的半径,只有当渐变类型为radial时才能使用。
9. android:useLevel:设为false时才有渐变效果,使用LevelListDrawable时要设置为true

padding:内间距
1. android:top:距离顶部内间距。
2. android:bottom:距离底部内间距。
3. android:left:距离左边内间距。
4. android:right:距离右边内间距。

size:大小
1. android:width:宽度。
2. android:height:高度。

stroke:描边
1. android:width:设置边框的宽度 。
2. android:color:设置边框的颜色。
3. android:dashGap:设置虚线的间隔宽度。
4. android:dashWidth:设置虚线的宽度。
注:dashWidthdashGap属性只要其中一个设置为0dp,则边框为实线边框。

shape:形状,默认为矩形
1. android:shape="ring":环形。
2. android:shape="line":线性形。
3. android:shape="oval":椭圆形。
4. android:shape="rectangle":矩形。
如果设置为android:shape="ring"时还可以设置一下属性:
1. android:innerRadius:尺寸,内环的半径。
2. android:innerRadiusRatio:浮点型,以环的宽度比率来表示内环的半径,默认为3,表示内环半径为环的宽度除以3,该值会被innerRadius覆盖。
3. android:thickness:尺寸,环的厚度。
4. android:thicknessRatio:浮点型,以环的宽度比率来表示环的厚度,默认为9,表示环的厚度为环的宽度除以9,该值会被thickness覆盖。
5. android:useLevelboolean值,一般设置为false,否则可能环形无法显示,只有作为LevelListDrawable使用时才设为true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值