这里主要是说一下实现思路,楼主在全网没有找到能实现这种功能的第三方控件,所以自己自定义了一个组合控件,用到了第三方的框架,链接:阴影框架
由于框架不能实现自定义四边的阴影颜色,所以楼主创建了自定义view,然后自己写了一个布局,使用framelayout布局重叠了两个阴影布局,一个用来做左上边的阴影,一个右下角的,代码如下
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="afterDescendants"
android:background="@color/material_on_primary_disabled"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.lihang.ShadowLayout
android:id="@+id/right_bottom_shadow"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:hl_layoutBackground="@color/design_default_color_primary"
app:hl_cornerRadius="10dp"
app:hl_shadowColor="#2a000000"
app:hl_shadowLimit="5dp"
app:hl_shadowOffsetX="2dp"
app:hl_shadowOffsetY="2dp"
>
<TextView
android:textStyle="bold"
android:id="@+id/right_bottom_shadow_text"
android:textColor="@color/white"
android:paddingVertical="@dimen/dp_5"
android:paddingHorizontal="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="lala"
/>
</com.lihang.ShadowLayout>
<com.lihang.ShadowLayout
android:id="@+id/left_top_shadow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:hl_cornerRadius="10dp"
app:hl_layoutBackground="@color/design_default_color_primary"
app:hl_shadowColor="#AAFFFFFF"
app:hl_shadowLimit="5dp"
app:hl_shadowOffsetX="-2dp"
app:hl_shadowOffsetY="-2dp"
>
<TextView
android:id="@+id/left_top_shadow_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:outlineProvider="background"
android:paddingHorizontal="10dp"
android:paddingVertical="@dimen/dp_5"
android:text="lala"
android:textStyle="bold"
android:textColor="@color/white" />
</com.lihang.ShadowLayout>
</FrameLayout>
然后在自定义view中填入上面的布局,即
把布局填进去,然后找到布局里面的view初始化,向外面抛出事件去改变布局中的参数,也可以自定义属性,然后初始化时导入,即
关于这个第三方框架,一定要先熟悉大概效果,单看楼主这篇文章应该不能很快就应用,这里只是说一下思路,没有很仔细,不懂的在评论区问