ShadowLayout

2025-04-30

android

企業裡的員工在經過三年的體驗與洗禮之後,才能勝任回答外界電話查詢的工作,因為一通電話很可能造成許多事情的影響。 —— 希思

https://github.com/lihangleo2/ShadowLayout

ShadowLayout:可定制化的万能阴影布局

在 Android 开发中,阴影效果是提升界面视觉层次感的重要元素。尽管官方提供了 CardView 来实现常见的阴影效果,但其功能有限,无法满足复杂的定制需求。ShadowLayout 是一个强大的万能阴影布局库,它突破了 CardView 的限制,提供了高度可定制的阴影效果和动态样式支持。


什么是 ShadowLayout?

ShadowLayout 是一个开源的 Android 布局库,专注于实现高度可定制的阴影效果。它允许开发者设置阴影的偏移、扩散程度、圆角半径以及多边控制,同时支持动态设置 shape 和 selector,进一步简化了布局样式的开发。

核心特点:

  1. 全方位阴影控制:支持阴影的 x、y 轴偏移,扩散程度,圆角以及单边或多边隐藏阴影。
  2. 动态样式支持:支持动态设置 shape 和 selector,替代传统的 XML shape 文件。
  3. 高度灵活:可随意更改颜色值、圆角半径等属性,适配多种 UI 需求。
  4. 简单易用:通过少量代码即可实现复杂的阴影效果。

使用场景

ShadowLayout 广泛适用于以下场景:

  1. 卡片式布局
    创建具有立体感的卡片效果,用于展示关键内容或模块。

  2. 按钮阴影
    为按钮添加动态阴影效果,提升点击区域的辨识度。

  3. 自定义组件
    用于自定义组件的阴影装饰,增加界面的视觉层次感。


快速上手指南

以下是使用 ShadowLayout 的基本步骤:

1. 添加依赖

在项目的 build.gradle 文件中添加以下依赖:

1
implementation 'com.github.lihangleo2:ShadowLayout:3.0'

2. 在布局文件中使用

通过 XML 定义一个 ShadowLayout:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<com.lihang.ShadowLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:shadowColor="#55000000"
app:shadowRadius="10dp"
app:shadowDx="5dp"
app:shadowDy="5dp"
app:cornerRadius="15dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello ShadowLayout"
android:textColor="#FFFFFF"
android:padding="10dp"
android:background="#FF6200EE" />
</com.lihang.ShadowLayout>

3. 动态设置属性

通过 Java 或 Kotlin 动态设置 ShadowLayout 的属性:

1
2
3
4
5
6
ShadowLayout shadowLayout = findViewById(R.id.shadowLayout);
shadowLayout.setShadowColor(Color.parseColor("#55000000"));
shadowLayout.setCornerRadius(20);
shadowLayout.setShadowRadius(15);
shadowLayout.setShadowDx(10);
shadowLayout.setShadowDy(10);

组件属性

ShadowLayout 提供了丰富的自定义属性,开发者可以根据需求灵活调整:

属性名 类型 描述
shadowColor Color 阴影颜色
shadowRadius Dimension 阴影扩散半径
shadowDx Dimension 阴影在 x 轴的偏移量
shadowDy Dimension 阴影在 y 轴的偏移量
cornerRadius Dimension 圆角半径
layoutBackground Color 背景颜色

高级用法

1. 动态切换 Shape 和 Selector

使用代码动态设置 Shape 和 Selector:

1
2
3
shadowLayout.setLayoutBackground(Color.parseColor("#FF6200EE"));
shadowLayout.setCornerRadius(30);
shadowLayout.setShadowRadius(20);

2. 单边隐藏阴影

通过设置属性隐藏某些边的阴影:

1
2
app:hideLeftShadow="true"
app:hideTopShadow="true"

社区与支持

ShadowLayout 是一个活跃的开源项目,目前在 GitHub 上拥有 3601 个星标410 个分支。你可以通过以下方式参与社区:

  • 访问项目主页GitHub 仓库
  • 提交 Issue:报告 Bug 或提出功能建议。
  • 贡献代码:通过 Pull Request 为项目做出贡献。

适用项目

ShadowLayout 提供了强大的功能和灵活性,适用于各种类型的 Android 项目,包括但不限于:

  1. 企业级应用:如电商、金融类应用中的卡片式布局或按钮装饰。
  2. 个人项目:快速实现视觉效果提升,增强用户体验。
  3. UI 定制化应用:需要高度自定义布局的项目。

结语

ShadowLayout 是一个功能强大且易用的万能阴影布局库,它通过丰富的自定义属性和动态设置能力,极大地方便了 Android 开发者的日常工作。如果你正在寻找一个替代 CardView 的解决方案,不妨试试 ShadowLayout!它将为你的项目带来更强的视觉表现力。