Android应用之定义阴影和裁剪视图技巧


今天要写的阴影和视图裁剪,没法向下兼容,请注意。android

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

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

有更高Z值的视图挡住Z值较低的视图。不管如何,Z值不会影响到View的大小。动画

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

为视图分配高度设计

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

Z = elevation + translationZ视频



不一样高度的视图的阴影xml

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

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

新的方法ViewPropertyAnimator.z()和ViewPropertyAnimator.translationZ()能够让你更容易的变更视图的高度。更多的信息,看e良师益友的Android应用开发视频教程

你也能够使用StateListAnimator方式定义这些文件在xml文件中。特别适用于,状态改变时执行的动画,好比用户点击按钮。更多信息,请看动画视图状态改变,下次在动画一节讲。

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

自定义视图阴影和轮廓

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

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


背景是一个圆角矩形


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

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

1.继承ViewOutlineProvider类

2.重写getOutline()方法

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

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

裁剪视图

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

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

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

总结

上面能够看到,设置阴影很简单:

设置eleavation值。

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

更多关于Android应用开发的知识、技巧请关注e良师益友网

相关文章
相关标签/搜索