首页 > 代码库 > Creating Apps With Material Design —— Defining Shadows and Clipping Views

Creating Apps With Material Design —— Defining Shadows and Clipping Views

View转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出,谢谢

定义阴影和裁减

材料设计引入了深度的UI元素。深度帮助用户了解每个元素的相对重要性,以及集中注意力于手头的任务。 


一个视图,通过Z属性表示的Elevation,决定了它的影子的大小:具有较高的Z值的View蒙上更大的阴影。浏览次数只投射阴影在Z=0平面上;他们不投在下面放置它们和上面的Z =0平面的其他意见的阴影。 

具有较高的Z值的意见闭塞的View与较低的Z值。然而,鉴于Z值不会影响视图的大小。 

Elevation也很有创建动画,其中的小部件暂时超越视图平面执行某些操作的时候。


指定Elevation到你的Views


一个视图中的Z值有两个组成部分,高度和翻译。仰角是静态分量和翻译是用于动画:

Z = elevation + translationZ


设置在布局定义视图的高度,使用android:elevation属性。设置在活动的代码视图的高度,使用View.setElevation()方法。 

要设置视图的转换,使用View.setTranslationZ()方法。 

新ViewPropertyAnimator.z()和ViewPropertyAnimator.translationZ()方法,使您能够轻松地制作动画的View elevation。欲了解更多信息,请参阅ViewPropertyAnimator和物业动画开发人员指南的API参考。 

您也可以使用StateListAnimator以声明方式指定这些动画。这是情况下,状态变化触发动画,当用户按下一个按钮,像特别有用。欲了解更多信息,请参见动画视图状态更改。
Z值与X和Y值具有相同的测量单位


自定义视图的阴影和Outlines


一个视图的背景绘制的边界决定了其影子的默认形状。Outlines表示图形对象的外部形状,并限定了波纹区域的触摸反馈。

考虑这个View,与背景绘制的定义:

<TextView
    android:id="@+id/myview"
    ...
    android:elevation="2dp"
    android:background="@drawable/myrect" />

背景绘制定义为带有圆角的矩形:

<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="#42000000" />
    <corners android:radius="5dp" />
</shape>

该视图投下带有圆角的影子,因为背景绘制定义视图的轮廓。提供了一个自定义的轮廓覆盖视图的影子的默认形状。 


要定义自定义大纲代码中的一个View: 


    扩展ViewOutlineProvider类。 
    覆盖getOutline()方法。 
    分配新大纲提供给您的视图与View.setOutlineProvider()方法。 

您可以创建椭圆形和矩形轮廓使用大纲类中的方法圆角。默认纲要提供者的意见得到从视图的背景轮廓。为了防止鉴于蒙上阴影,设置其轮廓提供商为null。


裁减视图

裁剪View,您可以轻松地更改视图的形状。你可以改变视图一致性与其他设计元素或改变的图的形状,以响应用户输入。您可以剪辑,以便使用View.setClipToOutline()方法还是Android的轮廓区域:clipToOutline属性。只有矩形,圆形和圆角矩形轮廓支撑剪裁,如由Outline.canClip()方法来确定。 

夹视图到绘制的形状,设置绘制的视图的背景(如上图所示),并调用View.setClipToOutline()方法。 

剪裁View是昂贵的操作,所以不要动画,你用它来夹视图的形状。为了达到这个效果,请使用显示效果动画。







Creating Apps With Material Design —— Defining Shadows and Clipping Views