【绝非标题党】android 实现比CardView更完美的阴影库

1,756 阅读1分钟

一位程序员坐在电脑旁“强大的阴影库”.png

首先来看一下我写的这个库的效果图

如果用cardView 来实现这个阴影你觉得能实现吗? 当然不能, 因为cardView不支持自定义阴影颜色, 而我写的这个库就能实现这个效果。


优势

  • 能自定义阴影的颜色值, 而cardView不可以

  • 可以自定义圆角

  • 可以控制上下左右的某一边是否需要圆角。 而cardView不可以

总而言之, 能用cardView实现的功能 这个库都能实现。 反之能用这个库能实现自定义阴影, 是否需要圆角, 而cardView实现不了。


添加依赖

在根目录的build.gradle 引入maven

maven { url 'https://dl.bintray.com/richzjc/maven' }

在module的 dependencies下面添加

implementation 'com.richzjc:ShadowLib:1.0.15

gitHub上面项目的地址

备注

当前控件只能包裹一个子控件


自定义属性介绍

  • hl_topShow: 是否显示上阴影
  • hl_bottomShow: 是否显示下阴影
  • hl_leftShow: 是否显示左阴影
  • hl_rightShow: 是否显示右阴影
  • hl_shadowRadius: 阴影的宽度
  • hl_cardCornorRadius: 圆角
  • hl_shadowColor: 阴影的颜色值
  • hl_shadowSolidColor: 基本上用不到

    <attr name="hl_topShow" format="boolean" />
    <attr name="hl_bottomShow" format="boolean" />
    <attr name="hl_leftShow" format="boolean" />
    <attr name="hl_rightShow" format="boolean" />
    <attr name="hl_shadowRadius" format="dimension"/>
    <attr name="hl_cardCornerRadius" format="dimension"/>
    <attr name="hl_shadowColor" format="color|reference"/>
    <attr name="hl_shadowSolidColor" format="color|reference"/>

示例代码

            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:background="#000"
            android:paddingLeft="10dp"
            app:hl_shadowRadius="30dp"
            app:hl_cardCornerRadius="10dp"
            app:hl_shadowSolidColor="#123456"
            app:hl_bottomShow="true"
            app:hl_topShow="true"
            app:hl_rightShow="true">
    
            <TextView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:background="#f00" />
                
        </com.richzjc.shadowlib.MyShadowLayout>