android xml实现控件边框阴影渐变效果

实现原理:使用两块画布重叠,上面画布小于下面画布,下面画布渐变

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--阴影-->
    <item
        android:left="2dp"
        android:top="2dp"
        android:right="2dp"
        android:bottom="2dp"
        >
        <shape android:shape="rectangle">
            <gradient
                android:angle="270"
                android:endColor="#f5f5f5"
                android:startColor="#ffffff"/>

            <corners
                android:bottomLeftRadius="2dp"
                android:bottomRightRadius="2dp"
                android:topLeftRadius="2dp"
                android:topRightRadius="2dp"/>
        </shape>
    </item>
    <!--阴影-->

    <!--白色背景-->
    <item
        android:left="3dp"
        android:top="3dp"
        android:bottom="5dp"
        android:right="3dp">

        <shape android:shape="rectangle">
            <gradient
                android:angle="270"
                android:endColor="#FFFFFF"
                android:startColor="#FFFFFF"/>

            <corners
                android:bottomLeftRadius="2dp"
                android:bottomRightRadius="2dp"
                android:topLeftRadius="2dp"
                android:topRightRadius="2dp"/>
        </shape>
    </item>

</layer-list>

  • shape 的属性 (rectangle:矩形;line:线性;oval:椭圆;ring:环形),默认为矩形

  • corners 边角弧度 必须是在shape=rectangle的时候,corners才有效

  • solid 用以指定内部填充色

  • gradient //定义渐变色,可以定义两色渐变和三色渐变,及渐变样式

       linear(线性渐变)、radial(放射性渐变)、sweep(扫描式渐变), 在构造放射性渐变时,要加上android:gradientRadius属性(渐变半径),即必须指定渐变半径的大小才会起作用。
      
       <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时才有效     
    
  • stroke 这是描边属性,可以定义描边的宽度,颜色,虚实线等

    <stroke 
              android:width="dimension"   //描边的宽度      
    
              android:color="color"   //描边的颜色    // 以下两个属性设置虚线    
    
              android:dashWidth="dimension"   //虚线的宽度,值为0时是实线   
    
              android:dashGap="dimension" />    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值