TranslationZ在Android中实际做了什么?

时间:2015-04-24 13:03:32

标签: android android-5.0-lollipop material-design

您好我正在开发Android应用程序,我正在尝试实现新的材料设计功能。我试图应用提升属性和TranslationZ属性,但它无法正常工作。

<Button
    android:id="@+id/button1"
    style="@style/ButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:text="Name" />  

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="#0073ff" />
    <corners android:radius="16dp" />
</shape>

<style name="ButtonStyle">
        <item name="android:elevation">8dp</item>
        <item name="android:translationZ">8dp</item>
        <item name="android:background">@drawable/file</item>
</style>

2 个答案:

答案 0 :(得分:8)

TranslationZ是一个用于动画的动态属性。基本上它需要很好地处理高程变化。当您按下按钮时,其高程保持不变,其translationZ正在动画化。这样,View始终知道原始高程值​​是什么,并且可以正确响应多个触摸事件。

内部Z =海拔+ translationZ

答案 1 :(得分:2)

简单修复

您的问题失去了触控反馈&amp;更新样式时的Z动画来自未扩展您的样式中的父 android:Widget.Material.Button 。如果您这样做,您将不必进行任何手动动画或触摸反馈。只是覆盖你需要的东西!

Z深度解释

根据文档,TranslationZ只是Z值的动态组件。这意味着当您在Z轴上设置视图动画(使用ViewPropertyAnimator等)时,动画状态将从Z值的静态分量开始,{{ 1}},并且结束处于完整的Z值,其中elevation组件是两者之间的变化,或者是delta。

Z =海拔+ translationZ

要使用translationZ实现动画,您需要制作translation。在您的特定情况下,因为您没有动画任何内容,为了将Z深度设置为StateListAnimator,您只需要Button