1:先看效果图
要制造出这种效果的阴影这里提供三种思路重点推荐第三种
1:CardView desgin 包中的控件,自带阴影效果 通过 属性控制阴影浓度
app:cardElevation
在API >= 21 可以直接通过使用
android:elevation
2:通过点九图,让美工给你加好阴影之后直接设置为控件背景
3: 通过android 图层 xml 方式实现,下面举个例子
步骤----1:创建图层drawable,top_10dp_shadow_bg 代码如下
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient android:angle="-90" android:startColor="#1cffffff" android:endColor="#3c000000"/>
</shape>
</item>
<item android:top="10dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/white"/>
</shape>
</item>
</layer-list>
解释:渐变实现阴影从白色#1cffffff 到 黑色#3c000000 渐变 -90 自上而下渐变,第二个item 是给了一个控件的白色背景
步骤--2 :直接将这个图层当做控件的背景是不可以实现阴影的,还需要调整目标控件的上方留出10个dp 来显示图层背景
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="58dp"
android:background="@drawable/top_10dp_shadow_bg"
android:orientation="horizontal">
<com.hytch.TravelTicketing.widgets.ColorfulTextView
android:id="@+id/total_consume"
android:layout_width="wrap_content"
android:layout_height="17dp"
android:text="@string/total_consume"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="10dp"
android:layout_marginStart="20dp"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="107dp"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:background="@drawable/seletor_send_order_bg"
android:text="@string/send_order"
android:textColor="@android:color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_goneMarginTop="10dp"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
解释原本 设计图中48dp 的ConstraintLayout ,我将它加大了10dp 用于显示图层中10dp 渐变带来的阴影效果,记录下来这个小窍门