前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >巧用layer-list实现按钮背景阴影、投影

巧用layer-list实现按钮背景阴影、投影

作者头像
木溪bo
发布2019-07-28 14:11:07
2.4K0
发布2019-07-28 14:11:07
举报
文章被收录于专栏:木溪知识加油站
  • 我们在实现UI标注画图的时候难免会遇到要求按钮带阴影的效果。很多人会想,现在安卓5.0以上原生控件已经支持android:elevation=""属性设置投影了,再者也可以使用CardView给需要投影的布局控件来包一层,因为CardView也是带app:cardElevation=""属性的,设置投影还不是分分钟的事。
  • 当我在实际开发中时,项目需求几乎所有的控件按钮都是带阴影的,列表项、详情项等等,如果使用切图肯定是不大现实的,占用空间太大。当我使用上面提到的android:elevation=""与app:cardElevation=""属性时遇到瓶颈了,这两个属性可以用也很方便,但是遇上苛刻的UI就不行了,因为颜色差值不对,与UI效果图相差太大,而安卓系统却没有提供可以改变颜色的api。所以我弃用了这个方案,改用了layer-list使用视图层叠的方式实现,最后将其设置为背景图即可。代码如下:
代码语言:javascript
复制
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <!--注意每一层图层的颜色变化,每个图层颜色改变实现阴影渐变-->
    <!--
    总共内边距,背景内加、背景外减去边距
    bottom="4dp"
    left="4dp"
    right="4dp"
    top="1.5dp"
    height="13.5dp"
     />-->
    <item>
        <shape android:shape="rectangle">
            <padding
                android:bottom="0.8dp"
                android:left="0.8dp"
                android:right="0.8dp"
                android:top="0.5dp" />
            <solid android:color="#0DCCCCCC" />
            <corners android:radius="10dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <padding
                android:bottom="0.8dp"
                android:left="0.8dp"
                android:right="0.8dp"
                android:top="0.5dp" />
            <solid android:color="#10CCCCCC" />
            <corners android:radius="9dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <padding
                android:bottom="0.8dp"
                android:left="0.8dp"
                android:right="0.8dp"
                android:top="0.5dp" />
            <solid android:color="#15CCCCCC" />
            <corners android:radius="8dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <padding
                android:bottom="0.8dp"
                android:left="0.8dp"
                android:right="0.8dp"
                android:top="0.5dp" />
            <solid android:color="#20CCCCCC" />
            <corners android:radius="7dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <padding
                android:bottom="0.8dp"
                android:left="0.8dp"
                android:right="0.8dp"
                android:top="0.5dp" />
            <solid android:color="#30CCCCCC" />
            <corners android:radius="6dp" />
        </shape>
    </item>
    <item>
        <shape>
            <solid android:color="#FFFFFF" />
            <corners android:radius="5dp" />
        </shape>
    </item>
</layer-list>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.07.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档