Android 布局阴影实现









效果比较生硬,其本质就是颜色的渐变,如下: 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还有如让ui切阴影背景图,但由于控件大小规格差异较大,风格差异较大,并不推荐使用。

自定义阴影布局

这是我比较推荐的方式,可参考CardView的阴影实现自定义一个阴影布局实现。其实现是通过 setShadowLayersetMaskFilter 实现。

// mPaint.setShadowLayer(blurRadius,0,0,shadowColor);
if (blurRadius>0){
mPaint.setMaskFilter(new BlurMaskFilter(blurRadius,BlurMaskFilter.Blur.NORMAL));
}

相较于 setShadowLayer 来说,setMaskFilter 可供选中的实现方式要多一个blur实现类型,效果更好些,所以我是通过使用 setMaskFilter 来实现自定义阴影布局。

<cn.enjoytoday.shadow.ShadowLayout
android:id=“@+id/shadow3”
app:layout_constraintStart_toStartOf=“parent”
app:layout_constraintTop_toBottomOf=“@id/shadow1”
android:layout_marginTop=“20dp”
android:text=“”
app:shadowRadius=“0dp”
app:shadowColor=“#333”
app:blurRadius=“5dp”
app:xOffset=“0dp”
app:yOffset=“0dp”
android:layout_marginStart=“15dp”
android:gravity=“center”
android:background=“@drawable/shadow_layer”
android:textSize=“14sp”
android:textColor=“@color/colorBlack”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”>

</cn.enjoytoday.shadow.ShadowLayout>

使用

ShadowView 托管于GitHub, 仿照css的Box Shadow 的阴影实现效果设计实现,可通过设置水平、竖直偏移确认阴影方向,可设置模糊半径和圆角半径、阴影颜色等。可通过gradle直接依赖使用:

添加依赖

repositories {
//…
maven { url ‘https://jitpack.io’ }
}

dependencies {
implementation ‘com.github.amikoj:ShadowView:1.0.1’
}

xml中使用

<cn.enjoytoday.shadow.ShadowLayout
android:orientation=“vertical”
android:id=“@+id/shadowLayout”
app:layout_constraintBottom_toBottomOf=“parent”
app:layout_constraintLeft_toLeftOf=“parent”
app:layout_constraintRight_toRightOf=“parent”
app:layout_constraintTop_toTopOf=“parent”
android:gravity=“center”
app:shadowRadius=“10dp”
app:shadowColor=“#bebebe”
app:bgColor=“#fff”
app:xOffset=“10dp”
app:yOffset=“0dp”
app:blurRadius=“5dp”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”>

</cn.enjoytoday.shadow.ShadowLayout>

属性说明
属性名类型说明
shadowColorcolor阴影渲染颜色
shadowRadiusdimension背景圆角半径(0为矩形)
属性名类型说明
shadowColorcolor阴影渲染颜色
shadowRadiusdimension背景圆角半径(0为矩形)
### 如何在 Android 中添加或实现视图阴影效果 #### 使用 `CardView` 组件 为了简化阴影效果的实现,推荐使用 `CardView` 组件。该组件自带圆角和阴影功能,能够轻松创建具有阴影效果的卡片布局。 ```xml <androidx.cardview.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardCornerRadius="4dp" card_view:cardElevation="8dp"> </androidx.cardview.widget.CardView> ``` 此方法适用于大多数场景下的阴影需求[^1]。 #### 自定义 View 的阴影设置 对于更复杂的自定义控件,可以通过 XML 或者 Java/Kotlin 代码手动配置阴影参数: ##### 方法一:XML 属性配置 利用 `elevation` 和 `translationZ` 属性,在 XML 文件中直接指定阴影的高度。 ```xml <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:elevation="8dp"/> ``` ##### 方法二:Shape Drawable 定义 如果希望更加精细地控制阴影的颜色、方向等特性,则可以在 drawable 资源文件夹下新建一个 shape 类型的 xml 文件用于描述渐变色作为背景,并配合 angle 设置角度来模拟投影效果[^2]。 ```xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#FFAAAAAA" android:endColor="#FFFFFFFF" android:angle="-90"/> </shape> ``` 以上两种方式均能有效达成目标,具体选择取决于实际应用场景和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值