Android 自定义阴影效果详解及实例

Android 自定义阴影效果详解及实例

Android5.X中,Google为其增加了两个属性 android:elevation=” ” 与 android:translationZ=” “,对应垂直方向上的高度变化。系统会自动增加阴影效果。

在TabLayout中增加android:elevation=” 8dp” ,效果如下:

箭头指向的就是系统为我们默认提供,结果差强人意。那我们是不是可以自定义阴影,不使用系统提供的。

自定义阴影效果

阴影效果如下:


这里只使用自定义阴影,并未使用android:elevation=” 8dp”

原理

用遮盖的方式实现

共分为二层,前景层和背景层

前景层:设置一个绿色的矩形区域

背景层:一个从黑到绿色的过度颜色矩形填充,这里选择“绿色”是因为上面的也是一块绿色。

在res/drawable里创建Xml,Xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <item>
    <shape>
      <gradient
        android:startColor="#000" <!--开始颜色-->
        android:endColor="@color/colorAccent" <!--结束颜色,背景色:绿色.系统会自动绘制颜色-->
        android:angle="90" /><!--角度:从下到上-->

    </shape>
  </item>

  <item android:top="8dp"><!--距离顶部8dp-->
    <shape>
      <solid android:color="@color/colorAccent" />
    </shape>
  </item>

</layer-list>

提示:注释为方便读者阅读,所以报错就把注释删了。

然后设置TabLayout的 android:background=”@drawable/shadow_bg”

LayerDrawable对象

相信大家对ShapeDrawable比较了解,这里讲下少用的LayerDrawable,如果觉得有必要说下ShapeDrawable可以在评论反馈。

LayerDrawable可以包含一个Drawable数组,系统会按这些Drawable对象的数组的顺序进行绘制。

定义LayerDrawable对象Xml文件的根元素为< layer-list> < /layer-list,该元素可以包含多个< item>< /item>元素,该元素可指定如下属性:

  1. android:drawable=” ” : 指定作为LayerDrawable元素之一的Drawable对象
  2. android:id=” ” : 为Drawable对象指定一个id
  3. android:buttom|top|right|left=” ” : 指定一个长度值,指定Drawable对象绘制到目标组件的指定位置。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android编程使用自定义shape实现shadow阴影效果的方法

    本文实例讲述了Android编程使用自定义shape实现shadow阴影效果的方法.分享给大家供大家参考,具体如下: 直接上xml文件, 并且附上相应的解析: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_p

  • Android5.x中的阴影效果elevation和translationZ的实现方法

    android5.x中 view多了一个 属性 z,垂直高度上的变化. Z属性  由两部分组成,elevation 和 translationZ <ImageView android:id="@+id/me_daijjBack" android:layout_width="27dp" android:layout_height="27dp" android:elevation="3dp" android:translat

  • Android编程之阴影(Shadow)制作方法

    本文实例讲述了Android编程之阴影(Shadow)制作方法.分享给大家供大家参考,具体如下: 先看运行效果图如下: 阴影制作:包括各种形状(矩形,圆形等等),以及文字等等都能设置阴影. 阴影制作是什么原理呢? 其实很简单,你需要设置阴影的东西被看作一个主层.然后在主层下面画一个阴影层. 阴影制作涉及到一个重要函数: public void setShadowLayer (float radius, float dx, float dy, int color) 参数: radius:阴影半径

  • Android自定义ImageView实现在图片上添加图层效果

    首先我们先看下效果图 实现思路 这是两张前后对比图,右边第二张图里面的已抢光标签图片当已经没有商品的时候就会显示了,在每个图片的中心位置,第一想法是在ImageView的外层再套一层RelativeLayout 实现方法 <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <SelectableRoundedImageVi

  • Android百度地图应用之图层展示

    一.简介  1.地图类型  百度地图Android SDK 3.7.1提供了两种类型的地图资源(普通矢量地图和卫星图),开发者可以利用BaiduMap中的MapType属性(C#)来设置地图类型.C#核心代码如下: mMapView = FindViewById<TextureMapView>(Resource.Id.bmapView); mBaiduMap = mMapView.Map; //设置底图显示模式:普通地图 mBaiduMap.MapType = BaiduMap.MapType

  • 详解Android Material设计中阴影效果的实现方法

    View可以投下的阴影,一个View的elevation值决定了它的阴影的大小和绘制的顺序.可以设置一个视图的elevation,在布局中使用属性:android:elevation <TextView android:id="@+id/my_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=&quo

  • Android实现图片阴影效果的方法

    本文实例介绍了Android实现图片阴影效果,设置画布颜色,图像倾斜效果,图片阴影效果的方法,采用canvas.save(Canvas.MATRIX_SAVE_FLAG);来实现.由于图片的实际尺寸比显示出来的图像要大一些,因此需要适当更改下大小,以达到较好的效果,在原有矩形基础上,画成圆角矩形,同时带有阴影层.读者可以根据自身需要对该程序代码进行个性化的修改以便更符合自身项目需求. 具体实现代码如下: package canvas.test; import android.app.Activi

  • Android编程实现图片背景渐变切换与图层叠加效果

    本文实例讲述了Android编程实现图片背景渐变切换与图层叠加效果.分享给大家供大家参考,具体如下: 本例要实现的目的: 1.图片背景渐变的切换,例如渐变的从红色切换成绿色. 2.代码中进行图层叠加,即把多个Drawable叠加在一起显示在一个组件之上. 效果图: 代码很简单: (1)布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="

  • Android实现ImageView阴影和图层效果

    本文实例为大家分享了ImageView阴影和图层效果的实现代码,供大家参考,具体内容如下 import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import and

  • Android滑动到顶部和底部时出现的阴影如何去掉

    android去掉滑动到顶部和底部的阴影 <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" android:cacheColorHint="#00000000" android:divider="@color/line_color"

随机推荐