Material Design卡片阴影、Ripple Effect实现

Material Design的中使用对界面的绘制是在三维坐标中,每个控件、布局都有自己的高度,通过控件的高度变化来响应用户的操作。具有以下特性:

  • 高视图会覆盖低视图
  • 高视图会在低视图上投下高视图的阴影
  • 相对高度差越大,阴影会越显著

在FrameLayout 中需要设置它的elevation(高度、仰角)属性来控制控件的悬浮高度,需要设置页面的背景色为纯白色(#fff),即可达到封面图的效果。

<FrameLayout
    android:elevation="1dp"
    android:layout_marginTop="1dp"
    android:layout_marginLeft="3dp"
    android:layout_marginRight="3dp"
    android:layout_marginBottom="2dp"
    android:background="#fff"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
</FrameLayout>

点击时的ripple effect需要同时设置

android:background="?attr/selectableItemBackground"
android:clickable="true"

才能生效.