【问题标题】:What does TranslationZ actually do in Android?TranslationZ 在 Android 中实际上做了什么?
【发布时间】:2015-07-03 02:30:15
【问题描述】:

您好,我正在开发 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>

【问题讨论】:

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


【解决方案1】:

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

内部 Z = 高程 + 平移 Z

【讨论】:

  • 什么是海拔?它可以作为 z 顺序工作吗?例如具有较高高度的视图是否会绘制在具有较低高度的视图之上,即使它们稍后可能会在父视图的子视图中列出?
  • 是的,至少对于 ViewGroup 的默认实现是这样的。
【解决方案2】:

简单修复

您的问题在更新样式时丢失触摸反馈和 Z 动画来自 未扩展父级 android:Widget.Material.Button 以您的风格。如果您这样做,您将无需执行任何手动动画或触摸反馈。只需覆盖您需要的内容!

Z深度解释

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

Z = 高程 + 平移 Z

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

【讨论】:

    猜你喜欢
    • 2011-12-20
    • 2013-06-02
    • 2020-11-21
    • 2015-02-26
    • 2017-06-29
    • 2013-06-13
    • 2021-10-25
    • 2011-08-12
    • 1970-01-01
    相关资源
    最近更新 更多