Android给控件自定义边框和阴影

本文介绍了如何在Android中为控件添加自定义边框和阴影。通过创建shape资源文件,利用layer-list结合corners、solid、stroke等属性实现不同效果的边框和阴影。例如,通过调整corners的radius属性来设置圆角,通过stroke设置边框宽度和颜色,以及利用layer-list创建多层叠加以实现阴影效果。

所谓添加阴影,就是两个画布从重叠,上方的画布小于下方的画布,阴影颜色为下方的画布的颜色。

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

   corners    //设置圆角幅度,必须是在shape=rectangle的时候,corners才有效   

             <corners    

                         android:radius="dimension"      //全部的圆角半径      

                         android:topLeftRadius="dimension"   //左上角的圆角半径       

                         android:topRightRadius="dimension"  //右上角的圆角半径   

                         android:bottomLeftRadius="dimension"    //左下角的圆角半径

                        android:bottomRightRadius="dimension" />    //右下角的圆角半径

           eg:<corners android:radius="10dp" />
   solid用以指定内部填充色

         e.g:<solid  android:color="color" />

   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时才有效    

                           android:useLevel=["true" | "false"] />  //使用LevelListDrawable时就要设置为true。设为false时才有渐变效果   

   stroke   //这是描边属性,可以定义描边的宽度,颜色,虚实线等

            <stroke          

                  android:width="dimension"   //描边的宽度     

                  android:color="color"   //描边的颜色    // 以下两个属性设置虚线   

                  android:dashWidth="dimension"   //虚线的宽度,值为0时是实线  

                  android:dashGap="dimension" />      //虚线的间隔  


在Eclipse工程文件下的drawable文件下,新建shape_background_shadow_normal.xml文件。   

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- Bottom 2dp Shadow :底部阴影层-->
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#BBB" />

            <corners android:radius="10dp" />
        </shape>
    </item>

    <!-- White Top color:顶部层 -->
    <item
        android:bottom="4px"
        android:left="2px"
        android:right="3px"
        android:top="2px">
        <shape android:shape="rectangle" >
            <solid android:color="@color/white" />

            <corners android:radius="10dp" />

            <padding
                android:bottom="15dp"
                android:left="15dp"
                android:right="15dp"
                android:top="15dp" />


            <!--设置边框 宽度=1px,颜色为skyBluesss-->
            <stroke
                android:width="1px"
                android:color="@color/skyblue" />
          

        </shape>
    </item>

</layer-list>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值