Android 为控件设置阴影

在Android中设置一个阴影很简单,只需要两步:

  1. 设置eleavation值(高度)
  2. 添加一个背景或者outline (即阴影的形状)

说明:

View的大小位置都是通过x,y确定的,而现在有了z轴的概念,而这个z值就是View的高度(elevation),而高度决定了阴影(shadow)的大小

在这里插入图片描述
注:View的z值由两部分组成,elevation和translationZ(它们都是Android L新引入的属性)。

  • eleavation:是静态的成员:设置该组件“浮”起来的高度;
  • translationZ:是用来做动画:设置该组件在Z方向(垂直屏幕方向)上的位移。

Z(阴影大小) = elevation + translationZ

在layout中使用属性去定义:

android:elevation="10dp"
android:translationZ="10dp"

在java代码中使用

View.setElevation(float); 
View.setTranslationZ(float);

举例说明:

给TextView设置android:backgroundelevation(高度决定了阴影的大小)。

<TextView
    android:id="@+id/myview"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_margin="20dp"
    android:elevation="10dp"
    android:translationZ="1dp"
    android:text="阴影效果"
    android:gravity="center"
    android:background="@drawable/myrect" />

然后定义个xml(myrect.xml,该文件放到rec/drawable目录下)背景outline轮廓(背景轮廓决定了默认的阴影形状):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#ffffff" />
    <corners android:radius="7dp" />
</shape>

当这个背景drawable作为视图的轮廓,视图投射出圆角阴影。提供一个自定义的轮廓,可以覆盖默认视图阴影的形状。

扫描二维码关注公众号,回复: 10141248 查看本文章

效果图如下:
在这里插入图片描述

发布了100 篇原创文章 · 获赞 45 · 访问量 64万+

猜你喜欢

转载自blog.csdn.net/wangzhongshun/article/details/99594664