Android自定义边框加阴影

Android自定义边框加阴影,第1张

Android自定义边框,可以设置任意边框的角度和阴影。我下面分为 四个角度设置边框、两个角度设置边框、半圆球设置边框加两层阴影等。

效果图:

效果图:

效果图:

为控件设置一个有阴影感的背景图片即可,可以使用shape

在自定义shape中增加一层或多层,并错开,即可显示阴影效果。为增加立体感,按钮按下的时候,只设置一层。我们可以通过top, bottom, right 和 left 四个参数来控制阴影的方向和大小

//自定义两种阴影效果

第一种

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">  

  <item android:state_pressed="true"> 

    <layer-list> 

      <item android:left="4dp" android:top="4dp">

        <shape> 

          <solid android:color="#ff58bb52"/>  

          <corners android:radius="30dip"/> 

        </shape>

      </item> 

    </layer-list> 

  </item>  

  <item> 

    <layer-list> 

      <!-- 第一层 -->  

      <item android:left="4dp" android:top="4dp">

        <shape> 

          <solid android:color="#66000000"/>  

          <corners android:radius="30dip"/>  

          <!-- 描边 -->  

          <stroke android:width="1dp" android:color="#ffffffff"/> 

        </shape>

      </item>  

      <!-- 第二层 -->  

      <item android:bottom="4dp" android:right="4dp">

        <shape> 

          <solid android:color="#ff58bb52"/>  

          <corners android:radius="30dip"/>  

          <!-- 描边 -->  

          <stroke android:width="1dp" android:color="#ffffffff"/> 

        </shape>

      </item> 

    </layer-list>

  </item> 

</selector>

第二种

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">  

  <!-- 点击之后 -->  

  <item android:state_pressed="true"> 

    <layer-list> 

      <item android:left="4dp" android:top="4dp"> 

        <shape> 

          <solid android:color="#ff58bb52"/>  

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

        </shape> 

      </item> 

    </layer-list>

  </item>  

  <!-- 正常状态 -->  

  <item> 

    <layer-list> 

      <!-- 第一层 -->  

      <item android:left="2dp" android:top="2dp"> 

        <shape> 

          <solid android:color="#66000000"/>  

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

        </shape> 

      </item>  

      <!-- 第二层 -->  

      <item android:bottom="4dp" android:right="4dp"> 

        <shape> 

          <solid android:color="#ff58bb52"/>  

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

        </shape> 

      </item>  

      <!-- 第三层 -->  

      <item android:bottom="6dp" android:right="6dp"> 

        <shape> 

          <solid android:color="#ffcccccc"/>  

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

        </shape> 

      </item> 

    </layer-list> 

  </item> 

</selector>

设置后的效果图如下

elevation 设置阴影需要注意两点:

1、view需要设置背景

2、阴影是绘制在父控件上的,子控件和父控件之间要留空隙,用padding也不行

在开发过程中有过这样的布局:

我子Linearlayout是设置的圆角背景,结果这样的效果是:只有圆角的便便才有一丁点的阴影,原因是父布局设置的是padding,子控件是match_parent,空隙不足导致,将子布局改为margin,去掉父控件的padding就行了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11359672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存