Android shape的用法详解

一、什么是Shape属性

在项目中经常会给控件定义背景,有时候有些界面可以叫UI做好,但如何显示的更加的贴近用户,则需要我们客户端去优化。

如果在设置背景Android:background=“图片、颜色”,设置单一的属性并不能带来更好的体验。我们此时就可以使用shape属性作为控件的背景。

shape怎么弄?

1. 在res/drawable下新建一个xml文件;

2. 在代码中引用这个xml文件,引用方式和图片一样。

shape有哪些功能?

  • corners - 圆角
  • gradient - 渐变
  • padding - 内容离边界距离
  • size - 大小 
  • solid - 填充颜色
  • stroke - 描边

shape用不用的区别

1.列表和按钮

 

二、shape的具体使用

1.直接上代码+属性的解析

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"]      //共有4种类型,矩形(默认)/椭圆形/直线形/环形
    // 以下4个属性只有当类型为环形时才有效
    android:innerRadius="dimension"     //内环半径
    android:innerRadiusRatio="float"    //内环半径相对于环的宽度的比例,比如环的宽度为50,比例为2.5,那么内环半径为20
    android:thickness="dimension"   //环的厚度
    android:thicknessRatio="float"     //环的厚度相对于环的宽度的比例
    android:useLevel="boolean">    //如果当做是LevelListDrawable使用时值为true,否则为false.
 
    <corners    //定义圆角  圆角一般会让人看起来更加丝滑一些
        android:radius="dimension"      //全部的圆角半径
        android:topLeftRadius="dimension"   //左上角的圆角半径
        android:topRightRadius="dimension"  //右上角的圆角半径
        android:bottomLeftRadius="dimension"    //左下角的圆角半径
        android:bottomRightRadius="dimension" />    //右下角的圆角半径
 
    <gradient   //定义渐变效果
        android:type=["linear" | "radial" | "sweep"]    //共有3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变
        android:angle="integer"     //渐变角度,必须为45的倍数,0为从左到右,90为从上到下
        android:centerX="float"     //渐变中心X的相当位置,范围为0~1
        android:centerY="float"     //渐变中心Y的相当位置,范围为0~1
        android:startColor="color"      //渐变开始点的颜色
        android:centerColor="color"     //渐变中间点的颜色,在开始与结束点之间
        android:endColor="color"    //渐变结束点的颜色
        android:gradientRadius="float"  //渐变的半径,只有当渐变类型为radial时才能使用
        android:useLevel=["true" | "false"] />  //使用LevelListDrawable时就要设置为true。设为false时才有渐变效果
 
    <padding    //内部边距
        android:left="dimension"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension" />
 
    <size   //自定义的图形大小
        android:width="dimension"
        android:height="dimension" />
 
    <solid  //内部填充颜色
        android:color="color" />
 
    <stroke     //描边
        android:width="dimension"   //描边的宽度
        android:color="color"   //描边的颜色
        // 以下两个属性设置虚线
        android:dashWidth="dimension"   //虚线的宽度,值为0时是实线
        android:dashGap="dimension" />      //虚线的间隔
</shape>

上面的属性大部分在使用的时候都会用到

android:shape=["rectangle" | "oval" | "line" | "ring"]      //共有4种类型,矩形(默认)/椭圆形/直线形/环形

这个是确定控件的形状,大多时候用的都是矩形

2.Demo

1. gradient渐变

2.stroke边框(此处为了明显,设的5dp,平时的话0.5dp左右就合适了)

此处我把边框设为5dp,边框线条为黑色,solid填充为白色,圆角曲率为6.6dp

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

&岁月不待人&

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

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

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

打赏作者

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

抵扣说明:

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

余额充值