android裁剪界面阴影层,建立Material Design风格Android应用--自定义阴影和裁剪视图...

以前已经写过经过应用主题和使用ListView, CardView,应用Material Design样式,同一时候都都可以经过support library向下兼容。今天要写的阴影和视图裁剪。没法向下兼容。请注意。html

​Material Design 为用户界面元素引入了深度这个元素。深度帮助用户理解各个元素之间的重要关联和帮助用户关注他们手上的任务。android

视图的高度(elevation)。经过Z属性表现,经过他的阴影肯定:z值更高的视图投影出更大的阴影。视图仅仅在Z=0的平面上投影处阴影;他们不会投影阴影在其它放在如下的视图上面和高于z=0的平面。app

有更高Z值的视图挡住Z值较低的视图。ide

无论怎样。Z值不会影响到View的大小。布局

高度也是实用的,当在运行一些动做的时候建立动画让组件升起。动画

为视图分配高度

一个View的Z值有两个组成部分,elevation(高度)和translation(平移).elevation是一个静态部分,translation 用于动画:ui

Z = elevation + translationZspa

c7e0a0e72abf4661ad33df38.html

不一样高度的视图的阴影设计

在布局文件里设置evelation 使用android:elevation,在代码中使用View.setElevation()方法。

设置一个视图的平移,使用View.setTranslationZ()方法。code

你也可以使用StateListAnimator方式定义这些文件在xml文件里。

特别适用于,状态改变时运行的动画,比方用户点击button。

不少其它信息,请看动画视图状态改变,下次在动画一节讲。

Z值在測量上使用和X,Y值同样的单位。

本身定义视图阴影和轮廓

视图的背景边界决定了阴影的默认形状。轮廓(Outlines)表明了图形对象的外形状,并肯定了对触摸反馈区的波纹。

看这个视图,定义一个背景Drawable:

android:id="@+id/myview"

...

android:elevation="2dp"

android:background="@drawable/myrect" />

背景是一个圆角矩形

android:shape="rectangle">

当这个背景drawable做为视图的轮廓。视图投射出圆角阴影。

提供一个本身定义的轮廓,可以覆盖默认视图阴影的形状。

在本身的代码中本身定义一个轮廓:

1.继承ViewOutlineProvider类

2.重写getOutline()方法

3.在视图中设置轮廓,使用View.setOutlineProvider()方法

你可以建立椭圆和圆角矩形轮廓使用OutLine类中的方法。视图默认的outline provider会依据视图的背景来生成轮廓。可以设置视图的outline provider为null。来阻止投射阴影。

裁剪视图

裁剪视图功能,可以让你更easy的改变视图的形状。你可以裁剪视图为了和其它的设计元素保持一致。或者改变成形状响应用户的输入。你可以裁剪一个视图的轮廓使用View.setClipToOutLine()方法,或者android:clipToOutline属性。仅仅有矩形,圆角矩形,圆圈的轮廓支持被裁剪,可以使用Outline.canClip()方法检測是否支持被裁剪。

裁剪视图到一个drawable的形状。设置drawable做为视图的背景(让视图显示在其上),并且调用View.setClipToOutline()方法。

裁剪视图是一个耗费的操做,裁剪视图时不要使用形状动画。达到这样的效果,请使用Reveal Effect 动画(下节讲)。

总结

上面可以看到,设置阴影很是easy:

设置eleavation值。

加入背景或者设置一个outline.

版权声明:本文博客原创文章。博客,未经赞成,不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值